我有一个简单的问题......为什么下面的这段代码不起作用?
- JDK版本:1.8.0_92
- Oracle 数据库版本: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: Invalid SQL type for column ”
当我尝试执行查询时发生错误:
select systimestamp from dual
但是,如果我使用下面的代码而不是“ rowset.populate(rs); ”,它会起作用:
rs.getTimestamp(1)
如果我尝试执行下面的查询,一切正常:
select sysdate from dual
那么,如何使用rowset.populate(rs)来获取syscurrenttimestamp?
我开始认为这是oracle的jdbc实现的错误......
对不起我的英语不好:)