gpt4 book ai didi

java - 在 Java 中使用 CLOB 抛出异常

转载 作者:行者123 更新时间:2023-11-29 07:10:32 29 4
gpt4 key购买 nike

我正在将 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;

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

最佳答案

无论如何您都不需要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 列一样。值得一试——会进一步减少代码。

关于java - 在 Java 中使用 CLOB 抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295506/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com