Derby获取CLOB与开放数据库连接失败

时间:2012-01-11 15:57:22

标签: java derby clob

我在derby表中有一个CLOB字段。在简单的SQL SELECT之后,我尝试将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());
      }
    }
  }

在调用free()方法或提交或回滚blob / clob事务后,不能调用java.sql.Clob / java.sql.Blob方法。

2 个答案:

答案 0 :(得分:2)

直接使用将CLOB转换为字符串 java.sql.ResultSet的getClob()方法:

if (rs.getObject(i) instanceof java.sql.Clob) {
   // Convert CLOBs to Strings
   Clob clob = rs.getClob(i);
   stringValue = clob.getSubString(1, (int) clob.length());
}

答案 1 :(得分:0)

JDBC BLOB / CLOB编程非常复杂。您可以在此处找到有关Derby实现BLOB / CLOB数据类型的方式的一些很好的信息:http://db.apache.org/derby/docs/10.8/ref/rrefjdbc96386.html

另一个好的资源是在德比回归测试套件中查看Derby源代码树;测试套件中有许多BLOB / CLOB编程的好例子。