1

我正在将 clob 数据插入 mysql 数据库...这是我的代码

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;

这里有什么问题?我该如何解决?

4

1 回答 1

6

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语句中的占位符。

许多现代驱动程序也处理setString()CLOB 列的“简单”。值得一试 - 会进一步减少代码。

于 2013-01-12T16:55:22.540 回答