如何使用 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 是一个 CLOBDBMS_LOB.SUBSTR() 将 return 一个 VARCHAR 值,如 indicated in the manual。随后,您应该使用 getString(),而不是 getClob() 来检索它(并使用正确的列名——您有 TEXT0,而查询将其定义为 TEXT)。