如何使用java获取Clob

如何使用java获取Clob,java,jdbc,db2,clob,db2-luw,Java,Jdbc,Db2,Clob,Db2 Luw,我在使用java获取Clob字段时遇到一些问题。这就是我所做的: String sql = ("SELECT DBMS_LOB.substr(LDTEXT, 1000) AS TEXT " + "FROM LONGDESCRIPTION "); try (Connection connection = BDOracle.abreConexaoDB2(); Statement statement = connection.cre

我在使用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());
    }
异常返回:

ERRORCODE=-4461,SQLSTATE=42815 [jcc][t4][1092][11644][3.53.70] 无效的数据转换请求的转换的结果列类型错误


查询在数据库上运行良好,我使用的是DB2。

假设
LDTEXT
CLOB
DBMS\u LOB.SUBSTR()
将返回
VARCHAR
值,如下所示。随后,您应该使用
getString()
,而不是
getClob()
来检索它(并使用正确的列名——您有
TEXT0
,而查询将其定义为
TEXT
)。

您是对的!我更改了代码并使用了“getString()”,它工作得非常好。非常感谢