2016-08-16 4 views
1

자바를 사용하여 Clob 필드를 얻는 데 문제가 있습니다. 그것은 여기 나누기자바를 사용하여 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를 사용하고 있습니다.

답변

1

LDTEXTCLOB이라고 가정하면 DBMS_LOB.SUBSTR()VARCHAR 값을 indicated in the manual으로 반환합니다. 따라서 getClob()이 아닌 getString()을 사용하여 검색하고 정확한 열 이름을 사용해야합니다. 쿼리에 TEXT으로 정의되어있는 동안 TEXT0이 있어야합니다.

+0

당신이 옳았습니다! 코드를 변경하고 "getString()"을 사용하면 완벽하게 작동합니다. 많은 감사 –