簡體   English   中英

Oracle 1.8 CachedRowSet.populate錯誤,其中從雙選擇systimestamp

[英]Oracle 1.8 CachedRowSet.populate error where select systimestamp from dual

我有一個簡單的問題...為什么下面的代碼不起作用?

  • JDK版本:1.8.0_92
  • Oracle DB版本:11.2.0.1.0
  • Oracle JDBC驅動程序:ojdbc6.jar --->我找不到此Java代碼源:(

     String SQL = "select systimestamp from dual"; Statement statement = null; ResultSet rs = null; try { statement = getConnection(name).createStatement(); if (statement != null) { rs = statement.executeQuery(SQL); } // Need to use a CachedRowSet that caches its rows in memory, which // makes it possible to operate without always being connected to // its data source CachedRowSet rowset = new CachedRowSetImpl(); rowset.populate(rs); return rowset; } catch (SQLException ex) { throw new DatabaseException(ex.getMessage(), ex); } finally { safeCloseResultSet(rs); safeCloseStatement(statement); } 

堆棧跟蹤:

java.sql.SQLException: Invalid SQL type for column
at javax.sql.rowset.RowSetMetaDataImpl.checkColType(RowSetMetaDataImpl.java:114)
at javax.sql.rowset.RowSetMetaDataImpl.setColumnType(RowSetMetaDataImpl.java:459)
at com.sun.rowset.CachedRowSetImpl.initMetaData(CachedRowSetImpl.java:761)
at com.sun.rowset.CachedRowSetImpl.populate(CachedRowSetImpl.java:639)

rowset.populate(rs); ”行拋出“ j ava.sql.SQLException:列 ”的SQL類型無效

當我嘗試執行查詢時發生錯誤:

select systimestamp from dual

但是,如果我使用下面的代碼而不是“ rowset.populate(rs); ”,它將起作用:

rs.getTimestamp(1)

而且,如果我嘗試執行以下查詢,則一切正常:

select sysdate from dual

那么,如何使用rowset.populate(rs)獲取syscurrenttimestamp

我開始認為這是Oracle的jdbc實現的錯誤...

對不起,我的英語不好:)

正如@krokodilko所建議的那樣,我將在此處發布我的評論作為答案:

我最終以姑息解決方案解決了這個問題。 我沒有執行查詢來返回TIMESTAMP,而是讓它返回了STRING:

SELECT TO_CHAR(SYSTIMESTAMP, 'DD/MM/YYYY HH24:MI:SS.SSXFF TZR') FROM DUAL

然后我必須對TIMESTAMP進行解析。 我知道這很丑陋,但是直到我們找到正確的解決方案為止。 我仍然希望有人會幫助我們解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM