2

コード :

 OracleCachedRowSet rowSet =  new OracleCachedRowSet();             
 ResultObject obj = new ResultObject(0,null);      
 PreparedStatement pstat = connection.prepareStatement(strQry);
 rowSet.populate(pstat.executeQuery());
 rowSet.beforeFirst();

 while(rowSet.next()){
      System.out.println("Conference name "+rowSet.getString(1));
      System.out.println("StartTime "+rowSet.getTimestamp(5)) ;
 }

上記のコードを実行すると、次のようなエラーが発生しました。

java.sql.SQLException: Invalid column type
    at oracle.jdbc.rowset.OracleCachedRowSet.getTimestamp(OracleCachedRowSet.java:4399)
    at test.Test.main(Test.java:102)

ResultSet代わりに使用すると、同じことが正常に機能します(正しいコードの下を確認してください)OracleCachedRowSet

  PreparedStatement pstat = connection.prepareStatement(strQry);                    
  ResultSet rset =   pstat.executeQuery();                  
  while(rset.next()){
        System.out.println("Conference name "+rset.getString(1));
        System.out.println("StartTime "+rset.getTimestamp(5)) ;
  }

getTimestamp()を使用する方法はありますOracleCachedRowSetか?

4

2 に答える 2

0

私たちは次のようにして定義されたものを達成することができます:

java.util.Date date = new java.util.Date(((oracle.sql.TIMESTAMP)rSet.getObject(5)).timestampValue().getTime())
于 2012-10-25T12:10:08.543 に答える
0

私はこれを使用しました:

Object timeStampObj = result.getObject(2);
if (timeStampObj instanceof oracle.sql.TIMESTAMP){
    oracle.sql.TIMESTAMP oraTimeStamp = (oracle.sql.TIMESTAMP)timeStampObj;
    report.setLastRefresh(new Timestamp(oraTimeStamp.longValue()));
}

ここで、結果は OracleCachedRowSet のインスタンスであり、レポート インスタンスの setLastRefresh は Timestamp を取ります。私の以前のコードは次のとおりです。

report.setLastRefresh(result.getTimestamp(2));

上記の行は Tomcat では機能しましたが、「無効な列タイプ」例外をスローする WebSphere では機能しませんでした。

于 2013-03-28T13:59:11.420 に答える