首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中使用CLOB抛出异常

在java中使用CLOB抛出异常
EN

Stack Overflow用户
提问于 2013-01-13 00:47:17
回答 1查看 3.9K关注 0票数 1

我正在将clob数据插入mysql database...here是我的代码

代码语言:javascript
复制
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");}

这是抛出一个异常

代码语言:javascript
复制
java.lang.AbstractMethodError: org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createClob()Ljava/sql/Clob;

这里有什么问题?我怎么才能解决它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-13 00:55:23

不管怎样,你不需要createClob()。我发现使用setCharacterStream()要稳定得多(所有的驱动程序对它的支持也更好)。

代码语言:javascript
复制
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()。这是值得一试的--这将进一步减少代码。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14295506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档