2016-08-16 8 views
1

javaを使用してClobフィールドを取得する際に問題が発生します。だから、これは私がやったことです: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を使用しています。

答えて

1

LDTEXTがであるとすると、DBMS_LOB.SUBSTR()は、indicated in the manualという値をVARCHARと返します。その後、getClob()ではなくgetString()を使用して検索してください(正確な列名を使用してください)。TEXTとしてクエリが定義されている間にTEXT0になります。

+0

あなたは正しいです!私はコードを変更し、 "getString()"を使用し、それは完全に働いた。どうもありがとう –

関連する問題