【问题标题】:com.microsoft.sqlserver.jdbc.SQLServerException: The result set has no current rowcom.microsoft.sqlserver.jdbc.SQLServerException:结果集没有当前行
【发布时间】:2013-05-28 21:43:27
【问题描述】:

我正在尝试获取结果集第一行中的第一列。我知道我可以更改我的 SQL 查询来做到这一点。但不是。我想要完整的桌子,我只想做我刚才提到的。

注意——Winners 是我的 sql 查询中的别名列。

错误基本上是-

com.microsoft.sqlserver.jdbc.SQLServerException: 
The result set has no current row.

更多错误 -

at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetHasCurrentRow(SQLServerResultSet.java:483)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(SQLServerResultSet.java:2047)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2082)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getValue(SQLServerResultSet.java:2067)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getString(SQLServerResultSet.java:2401) 

这是我迄今为止尝试过的,我需要你的帮助来解决它 -

ResultSet rs = statement.executeQuery("get a whole table"); //pseudocode

try{            
    rs.next();
    numberOne = rs.getString("Winners");
    rs.first(); 
} catch (SQLException e) {
    e.printStackTrace();
}

【问题讨论】:

    标签: java sql jdbc


    【解决方案1】:

    您的结果集中可能没有任何内容。使用

    if (rs.next()) {
        numberOne = rs.getString("Winners");
    }
    

    【讨论】:

    • 是的,这很奇怪。我的结果集中怎么可能没有?我在我的数据库中执行了相同的查询并得到了结果。但是java失败了:(
    • 要么你没有指向同一个数据库或模式,要么你没有提交用于插入行的事务。
    • 我在我的 ResultSet 使用的 SQL 服务器上运行了相同的查询。它工作正常。不知道为什么这在 Java 中不起作用。提交不是问题,数据库加载了行。我只需要读取数据库而不写入数据库。
    • 我使用了 CachedRowSetImpl 和烦人的 ResultSet。现在,它可以工作了。
    • 这完全坏了......我的 ResultSet 中有一些东西,但只能使用它,当我将 rs.beforeFirst(); rs.next(); 放在 rs.getSomething(); 前面时......知道为什么会发生这种情况以及如何修好吗?
    猜你喜欢
    • 2014-01-20
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2013-06-30
    相关资源
    最近更新 更多