DB2 JDBC Create clob error

自闭症网瘾萝莉.ら 提交于 2019-12-11 09:36:54

问题


I am using the db2jcc driver FIX Pack 6 of the 9 series.

My code

public void setParamsPreparedStatement(PreparedStatement s, String[][] params) throws Exception {
  ...
  Clob myClob = s.getConnection().createClob();
  myClob.setString(1, params[i][0]);

  s.setClob(i+1, myClob);

In JBoss 5.1.0 GA it throws the error:

12:01:54,914 242266 ERROR [org.jboss.aspects.tx.TxPolicy] (ConsumerMessageQueue:(1):) javax.ejb.EJBTransactionRolledbackException: Unexpected Error
java.lang.AbstractMethodError: org.jboss.resource.adapter.jdbc.jdk5.WrappedConnectionJDK5.createClob()Ljava/sql/Clob;
    at database.Executer.setParamsPreparedStatement(Executer.java:761)

In plain java it gives the error:

Exception in thread "main" java.lang.AbstractMethodError: com.ibm.db2.jcc.b.b.createClob()Ljava/sql/Clob;
    at TestClob.main(TestClob.java:20)

What is the cause?


回答1:


From my experience the createClob() call is not needed at all. Just use PreparedStatement.setCharacterStream()

PreparedStatement pstmt = conn.prepareStatement("insert into clob_table (id, clob_colum) values (?,?)";
String clobData = "....";
Reader reader = new StringReader(clobData);
pstmt.setInt(1, 42);
pstmt.setCharacterStream(2, reader, clobData.length());
pstmt.executeUpdate();

I have found this to be the only cross-DBMS/JDBC solution to handle CLOBs (and BLOBs in a similar manner).



来源:https://stackoverflow.com/questions/12724971/db2-jdbc-create-clob-error

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!