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

我用这个:

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 回答
0

我们可以通过以下方式实现定义的事情:

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