java.lang.AbstractMethodError: com.informix.jdbc.IfxPreparedStatement.setCharact

    /**
     * 插入clob数据
      * @throws Exception
     */
    public static void insertClobOfRead() throws Exception {
        PreparedStatement pstmt = null;
        String sql = "insert into table_clob1 values(?,?)";
        Class.forName("com.informix.jdbc.IfxDriver").newInstance();
        String url = "jdbc:informix-sqli://192.168.0.101:9088/db1:INFORMIXSERVER=ol_ids_1150_1;NEWLOCALE=zh_cn,en_us;NEWCODESET=gbk,8859-1,819;";
        Connection conn = DriverManager.getConnection(url);
        pstmt = conn.prepareStatement(sql);
        File file = new File("d:/1.txt");
        BufferedReader br = new BufferedReader(new FileReader(file));
        pstmt.setString(1, "1");
        pstmt.setCharacterStream(2, br, file.length());
        br.close();
    }

运行上面的代码会出现下面的错误信息:
Exception in thread "main" java.lang.AbstractMethodError: com.informix.jdbc.IfxPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V

错误原因:
         //informix数据库的jdbc驱动中的IfxPreparedStatement接口没有继承
         //setCharacterStreamint(parameterIndex, Reader reader, long length)
        //只继承了setCharacterStreamint(parameterIndex, Reader reader, int length)
        //这里需要将长度强制装换为int类型
修改:
     pstmt.setCharacterStream(2, br, (int)file.length());

你可能感兴趣的:(java,thread,sql,jdbc,Informix)