java.lang.NoSuchMethodError при вызове createClob () с внутренним драйвером JDBC Oracle

1

У меня есть Java-программа, загружаемая в базу данных Oracle 11.2.0.3. Я использую внутренний драйвер Oracle Server-Side для связи с базой данных хоста.

Проблема в том, что когда я пытаюсь вставить данные в столбцы 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

Doc ID 1484721.1 в моей службе поддержки Oracle дал указание использовать setClob()...

Почему мой код работает при запуске в качестве отдельной программы, но при попытке использования внутреннего драйвера (который имеет ту же версию) возникает ошибка?

Теги:
jdbc
oracle11g

1 ответ

1

Проблема, кажется, решена путем обертывания вставки внутри блока PL/SQL

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

и используя setCharacterStream, но мне все же интересно, почему исходный код генерирует NoSuchMethodError

Ещё вопросы

Сообщество Overcoder
Наверх
Меню