我在 Oracle 11.2.0.3 数据库中加载了一个 Java 程序。我正在使用 Oracle 的 Server-Side Internal Driver与主机数据库通信。
问题是当我尝试将数据插入 clob 列时
Clob clob = targetCon.createClob();
clob.setString(1, (String) value);
insertStm.setClob(col, clob);
我收到错误
Exception in thread "Root Thread" java.lang.NoSuchMethodError
如果我从独立程序(在数据库外部运行)调用它,则相同的代码可以工作。在这两种情况下,驱动程序信息均显示 Oracle JDBC 驱动程序版本:11.2.0.3.0
。
我还尝试了以下代码
String s = (String) value;
StringReader stringReader = new StringReader(s);
insertStm.setCharacterStream(col, stringReader , s.length());
但这给了我
java.sql.BatchUpdateException: ORA-01460: unimplemented or unreasonable conversion requested
Doc ID 1484721.1在 My Oracle Support 中指示使用 setClob()...
为什么我的代码在作为独立程序运行时可以工作,但在使用内部驱动程序(具有相同版本)时抛出错误?
最佳答案
这个问题似乎可以通过将插入内容包装在 PL/SQL block 中来解决
BEGIN
INSERT id, c INTO clob_tab VALUES(?,?);
END;
并使用setCharacterStream,但我仍然很好奇为什么原始代码会抛出NoSuchMethodError
关于使用 Oracle 内部 JDBC 驱动程序调用 createClob() 时出现 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25238228/