2013-01-12 2 views
1

에서 CLOB를 사용하여 나는자바 던지는 예외

Clob cl=dbCon.createClob(); 
cl.setString(1,userAbout); 
dbCon.setAutoCommit(false); 
PreparedStatement insertClob=dbCon.prepareStatement("UPDATE user_data SET user_about=? WHERE user_id=?"); 
insertClob.setClob(1,cl); 
insertClob.setInt(2,userId); 
int count= insertClob.executeUpdate(); 
if(count==1){dbCon.commit();dbCon.close();out.write("success");} 
else{dbCon.rollback();dbCon.close();out.print("error");} 

이 예외 여기에 무슨 문제

java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createClob()Ljava/sql/Clob; 

을 던지고 내 코드 여기 ... MySQL 데이터베이스에 CLOB 데이터입니다 삽입 무엇입니까? 어떻게 해결할 수 있습니까?

+0

어떻게 dbConnection을 만드십니까? –

+0

어떤 버전의 JDBC 드라이버를 사용하고 있습니까? – Swapnil

+0

연결 풀링 사용 연결 dbCon = DBConnection.getDBConnection(); –

답변

5

어쨌든 createClob()은 필요하지 않습니다. setCharacterStream()을 사용하면 훨씬 안정적이며 (모든 JDBC 드라이버에서 훨씬 더 잘 지원됨) 찾을 수 있습니다.

StringReader reader = new StringReader(userAbout); 
PreparedStatement insertClob = dbCon.prepareStatement("UPDATE user_data SET user_about=? WHERE user_id=?"); 
insertClob.setCharacterStream(1, reader, userAbout.length()); 
insertClob.setInt(2,userId); 

int count= insertClob.executeUpdate(); 

이 또한 INSERT 문과 함께 작동합니다. 중간 clob (또는 blob) 객체를 만들 필요가 없습니다.

8을 올바른 인덱스 2으로 변경하여 UPDATE 문에있는 자리 표시 자와 일치 시키십시오.

현대의 많은 드라이버는 CLOB 열과 마찬가지로 "단순한"setString()도 처리합니다. 시도해 볼 가치가 있습니다. 코드를 더 많이 줄일 수 있습니다.

관련 문제