【发布时间】:2017-12-19 03:18:38
【问题描述】:
我在数据库中有一个表,其中列(状态)的数据类型是 CLOB。我需要读取该状态
create table STATUS_TABLE
(
STATE_ID number(20,0),
STATUS clob
)
我正在尝试读取 CLOB 列,如下所示
String getStatus = "SELECT STATUS FROM STATUS_TABLE WHERE STATE_ID="+id;
Query statusResults = session.createSQLQuery(getStatus);
List statusRes = statusResults.list();
if ((statusRes != null) && (statusRes.size() > 0)) {
oracle.sql.CLOB clobValue = (oracle.sql.CLOB) statusRes.get(0);
status = clobValue.getSubString(1, (int) clobValue.length());
log.info("Status->:" + status.toString());
}
并得到错误
java.lang.ClassCastException: $Proxy194 cannot be cast to oracle.sql.CLOB
如何从数据库中读取 clob 数据并转换为字符串?
【问题讨论】:
-
您要存储什么数据??你为什么使用 CLOB?
-
我认为使用 PreparedStatement -> resultSet 然后使用 docs.oracle.com/javase/7/docs/api/java/sql/… 会更好
-
你的表也说
STATUS,但你的SQL说SELECT STATUS_DESCRIPTION