Дерби получить CLOB с открытым подключением БД не удается - PullRequest
2 голосов
/ 11 января 2012

У меня есть поле CLOB в таблице дерби. После простого выбора SQL я пытаюсь преобразовать CLOB в строки.

  • DBConnection отключен
  • DBConnection открыта
  • Этот код не работает, хотя я никогда не вызываю метод free ():

dbCon.connect;

  dbSourceDataList = dbCon.executeQuery(getSql());

   // convert all CLOBs to Strings      
  for (int i = 0; i < dbSourceDataList.size(); i++) {
    Object[] arr = dbSourceDataList.get(i);
    for (int j = 0; j < arr.length; j++) {
      if (arr[j] instanceof Clob) {
        Clob clob = (Clob) arr[j]; 
        arr[j] = clob.getSubString(1, (int) clob.length());
      }
    }
  }

Методы java.sql.Clob / java.sql.Blob нельзя вызывать после вызова метода free () или когда транзакции blob / clob были зафиксированы или откатаны.

Ответы [ 2 ]

2 голосов
/ 16 января 2012

Преобразование CLOB в строки, используя напрямую метод getClob () java.sql.ResultSet:

if (rs.getObject(i) instanceof java.sql.Clob) {
   // Convert CLOBs to Strings
   Clob clob = rs.getClob(i);
   stringValue = clob.getSubString(1, (int) clob.length());
}
0 голосов
/ 12 января 2012

Программирование JDBC BLOB / CLOB довольно сложное. Хорошую информацию о том, как Derby реализует типы данных BLOB / CLOB, можно найти здесь: http://db.apache.org/derby/docs/10.8/ref/rrefjdbc96386.html

Другим хорошим ресурсом является поиск в дереве исходников Derby, в наборе регрессивных тестов Derby; В тестовых наборах есть много хороших примеров программирования BLOB / CLOB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...