gpt4 book ai didi

java - Oracle 1.8 CachedRowSet.populate 错误,其中从双选择 systimestamp

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:24 25 4
gpt4 key购买 nike

我有一个简单的问题...为什么下面的代码不起作用?

  • 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);”抛出“java.sql.SQLException:列的 SQL 类型无效

当我尝试执行查询时发生错误:

select systimestamp from dual

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

rs.getTimestamp(1)

如果我尝试执行下面的查询,一切运行良好:

select sysdate from dual

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

我开始认为这是oracle的jdbc实现的一个bug...

抱歉我的英语不好:)

最佳答案

正如 @krokodilko 所建议的,我将在这里发布我的评论作为答案:

我最终通过姑息解决方案解决了这个问题。我没有执行查询来返回 TIMESTAMP,而是返回 STRING:

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

然后我必须对 TIMESTAMP 进行解析。我知道这很丑陋,但直到我们找到正确的解决方案为止。我仍然希望有人能帮助我们解决这个问题。

关于java - Oracle 1.8 CachedRowSet.populate 错误,其中从双选择 systimestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48692688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com