我在derby表中有一个CLOB字段。在简单的SQL SELECT之后,我尝试将CLOB转换为字符串。
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方法。
答案 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编程的好例子。