如何使用 java 获得 Clob
How to get a Clob using java
我在使用 java 获取 Clob 字段时遇到了一些问题。这就是我所做的:
String
sql = ("SELECT DBMS_LOB.substr(LDTEXT, 1000) AS TEXT "
+ "FROM LONGDESCRIPTION ");
try (Connection connection = BDOracle.abreConexaoDB2();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
) {
while (resultSet.next()) {
它在这里中断:
Clob clob = (Clob) resultSet.getClob("TEXT");
long length = clob.length();
String out = clob.getSubString(1, (int) length);
}
} catch (SQLException err) {
System.out.println(err.getMessage());
}
异常returns:
ERRORCODE=-4461, SQLSTATE=42815
[jcc][t4][1092][11644][3.53.70]
invalid data conversion wrong result column type for requested conversion.
查询在数据库上运行良好,我使用的是 DB2。
假设 LDTEXT
是一个 CLOB
,DBMS_LOB.SUBSTR()
将 return 一个 VARCHAR
值,如 indicated in the manual。随后,您应该使用 getString()
,而不是 getClob()
来检索它(并使用正确的列名——您有 TEXT0
,而查询将其定义为 TEXT
)。
我在使用 java 获取 Clob 字段时遇到了一些问题。这就是我所做的:
String
sql = ("SELECT DBMS_LOB.substr(LDTEXT, 1000) AS TEXT "
+ "FROM LONGDESCRIPTION ");
try (Connection connection = BDOracle.abreConexaoDB2();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
) {
while (resultSet.next()) {
它在这里中断:
Clob clob = (Clob) resultSet.getClob("TEXT");
long length = clob.length();
String out = clob.getSubString(1, (int) length);
}
} catch (SQLException err) {
System.out.println(err.getMessage());
}
异常returns:
ERRORCODE=-4461, SQLSTATE=42815 [jcc][t4][1092][11644][3.53.70] invalid data conversion wrong result column type for requested conversion.
查询在数据库上运行良好,我使用的是 DB2。
假设 LDTEXT
是一个 CLOB
,DBMS_LOB.SUBSTR()
将 return 一个 VARCHAR
值,如 indicated in the manual。随后,您应该使用 getString()
,而不是 getClob()
来检索它(并使用正确的列名——您有 TEXT0
,而查询将其定义为 TEXT
)。