我将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");}
Run Code Online (Sandbox Code Playgroud)
这是一个例外
java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createClob()Ljava/sql/Clob;
Run Code Online (Sandbox Code Playgroud)
这是什么问题?我该如何解决?
你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();
Run Code Online (Sandbox Code Playgroud)
这也适用于INSERT声明.无需创建任何中间clob(或blob)对象.
请注意,我将错误的索引8更改为正确的索引2以匹配UPDATE语句中的占位符.
许多现代驱动程序也setString()为CLOB列处理"简单" .值得尝试 - 会进一步减少代码.
| 归档时间: |
|
| 查看次数: |
3355 次 |
| 最近记录: |