2012-10-04 2 views
1

9 시리즈의 db2jcc 드라이버 FIX Pack 6을 사용하고 있습니다.DB2 JDBC clob 오류 생성

내 코드

는 오류가 발생 보스 5.1.0 GA에서
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); 

:

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

가 원인이 무엇입니까 : 일반 자바에서

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) 

는 오류를 제공합니다 ?

+0

사용중인 JBoss AS의 버전과 다운로드 한 바이너리는 무엇입니까? – Ami

+1

JDBC 4.0/Java 6에서'createClob()'가 추가되었습니다. 대부분 JDBC 3.0 드라이버를 사용하고 있습니다. –

답변

4

내 경험에 의하면 createClob() 전화는 전혀 필요하지 않습니다. 그냥 나는이 (유사한 방식으로와에 BLOB) CLOB를 처리 할 수있는 유일한 크로스 DBMS/JDBC의 솔루션으로 발견 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(); 

사용합니다.