Java com.microsoft.sqlserver.jdbc.SQLServerException:结果集没有当前行
我正在尝试获取结果集第一行的第一列。我知道我可以更改SQL查询来实现这一点。但是没有。我想要满满的桌子,我只想做我刚才提到的事情 注意-Winners是我的sql查询中的别名列。 误差基本上是-Java com.microsoft.sqlserver.jdbc.SQLServerException:结果集没有当前行,java,sql,jdbc,Java,Sql,Jdbc,我正在尝试获取结果集第一行的第一列。我知道我可以更改SQL查询来实现这一点。但是没有。我想要满满的桌子,我只想做我刚才提到的事情 注意-Winners是我的sql查询中的别名列。 误差基本上是- com.microsoft.sqlserver.jdbc.SQLServerException: The result set has no current row. 更多错误- at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromD
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();
}
您的结果集中可能没有任何内容。使用
if (rs.next()) {
numberOne = rs.getString("Winners");
}
是的,这很奇怪。我的结果集中怎么可能什么都没有?我在数据库中执行了相同的查询,并得到了结果。但java失败了:(可能您没有指向同一个数据库或架构,或者您没有提交用于插入行的事务。我在SQL server上运行了与我的ResultSet使用的相同的查询。它工作正常。不知道为什么在Java中不起作用。提交不是问题,DB加载了行。我只需要读取DB,而不需要写入DB。我使用了CachedRowSetImpl以及令人恼火的结果集。现在,它工作了。这完全坏了…我的结果集中有一些东西,但只能在我将
rs.beforeFirst();rs.next();
放在rs.getSomething();
前面时使用它。知道为什么会发生这种情况以及如何修复它吗?