【问题标题】:java.lang.NoSuchMethodError when calling createClob() with Oracle internal JDBC driver使用 Oracle 内部 JDBC 驱动程序调用 createClob() 时出现 java.lang.NoSuchMethodError
【发布时间】:2014-10-03 23:36:11
【问题描述】:

我在 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 driver version: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

My Oracle Support 中的Doc ID 1484721.1 指示使用 setClob()...

为什么我的代码在作为独立程序运行时可以工作,但在使用内部驱动程序(具有相同版本)时抛出错误?

【问题讨论】:

    标签: java jdbc oracle11g


    【解决方案1】:

    问题似乎通过将插入包装在 PL/SQL 块中来解决

    BEGIN
     INSERT id, c INTO clob_tab VALUES(?,?);
    END;
    

    并使用setCharacterStream,但我仍然很好奇为什么原始代码会抛出NoSuchMethodError

    【讨论】:

      猜你喜欢
      • 2013-06-13
      • 2021-11-12
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 2011-04-26
      • 2011-09-02
      相关资源
      最近更新 更多