com.microsoft.sqlserver.jdbc.SQLServerException: 结果集中没有当前行。

5

我正在尝试获取结果集中第一行的第一列。我知道我可以更改我的SQL查询来实现这一点,但不要这样做。我想要整张表格,并且只想做我刚才提到的事情。

请注意-赢家是我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();
}
1个回答

5

你的结果集可能为空。请使用

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

是的,这很奇怪。我的结果集里怎么可能什么都没有?我在数据库中执行了相同的查询并获得了结果。但是Java失败了 :( - Apple Grinder
要么你没有指向相同的数据库或模式,要么你没有提交用于插入行的事务。 - JB Nizet
我在 SQL Server 上运行了与我的 ResultSet 使用的相同查询。它可以正常工作。不知道为什么在 Java 中无法正常工作。提交不是问题,数据库已经加载了行。我只需要读取数据库而不是写入数据库。 - Apple Grinder
我使用了CachedRowSetImpl和令人烦恼的ResultSet,现在它可以工作了。 - Apple Grinder
这个代码完全出问题了...我的ResultSet中有一些东西,但我只能在rs.beforeFirst(); rs.next();放在rs.getSomething();前面的时候才能使用它... 你有任何想法为什么会发生这种情况,以及如何解决它? - geisterfurz007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,