1、java.sql.Clob 与oracle.sql.CLOB的区别。 java1.4自带的jdbc Clob接口比jdbc驱动的CLOB接口少了很多方法。 建议使用Oracle的JDBC的API。 如果要用Oracle的JDBC的API还需要在studio中将oracle的驱动引进来。不然会报错。 2 Clob字段可以正常导入数据实体,默认的EOS数据类型为“长字符串”,需要改为“字符串大对象”; 3在weblogic9.2环境中使用时,遇到ClassCastException的错误: java.lang.ClassCastException: weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB
原因分析:如果用weblogic的数据库连接池, 那么返回的数据类型经过了一次包装也就是返回weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB, 因此出现类型转换错误。也就是说在weblogic连接池下要必须用weblogic.jdbc.vendor.oracle.OracleThinClob 的CLOB。
代码:1 byte[] bs = (byte[]) values[i].getValue(); ByteArrayInputStream bin = new ByteArrayInputStream(bs); pstmt.setBinaryStream(i + 1, bin, bin.available());
2sqlstr = "select content from textinfo where textinfokey=" + integer.tostring(textinfokey) + " for update"; java.sql.statement st = myconn.createstatement(); java.sql.resultset rs = st.executequery(sqlstr); java.sql.clob clob ; if (rs.next()) { clob = rs.getclob("content"); weblogic.jdbc.rmi.serialoracleclob cast1 =(weblogic.jdbc.rmi.serialoracleclob)clob; weblogic.jdbc.rmi.internal.oracletclobimpl cast2 =(weblogic.jdbc.rmi.internal.oracletclobimpl)cast1.gettherealclob(); clob myclob = (oracle.sql.clob)cast2.gettherealclob(); java.io.writer out=myclob.getcharacteroutputstream(); out.write(content); out.flush(); out.close();