java - 在 Java 程序中使用结果集

标签 java jdbc resultset

Resultset rs=stmt.executeQuery("select count(*) from feedsca group by score order by score");

使用上面的 java 代码,我从名为 feedsCA 的表中检索行数。

在尝试使用 rs.getInt(1)、rs.getInt(2)、rs.getInt(3) 检索计数时,我以如下错误结束,

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The result set has no current row.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetHasCurrentRow(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source)
    at SimpleMail.main(SimpleMail.java:151)

更新:

上述异常已经解决。

但我得到以下异常,我不知道原因。请指教。

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyValidColumnIndex(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source)
    at SimpleMail.main(SimpleMail.java:152)

这就是我更新程序的方式。给我找到一个合乎逻辑的方法,因为我很清楚下面的循环不会按要求工作。

rs=stmt.executeQuery("select count(*) from feedsca group by score order by score");
while(rs.next()){
pw.printf(rowFormat, rs.getLong(1),"0",rs.getLong(2),rs.getLong(3));}

最佳答案

您必须将结果集的光标移动到一行 - 通过 resultSet.first() 或通过 resultSet.next()。最初光标指向第一行之前,因此出现异常。

当您想迭代ResultSet时:

while(rs.next()) {
    ...
}

更新:对于您的第二个问题 -(如 Casablanca 所述)您的查询似乎只返回一列,而您要求的是第二列和第三列 - 但未找到它们。请注意,在 rs.getX(idx) 中,idx 是列,而不是行。

关于java - 在 Java 程序中使用结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4016715/

相关文章:

java - onErrorMap 和 onErrorContinue

java - Maven 阶段的自定义 java 操作

java - GemfireXD - String(VARCHAR) 数组的PreparedStatement setArray 不起作用

java - 通过JDBC向PostgreSQL表中插入 "daterange"字段值

java - SQL复杂选择

java - 如何确定 ResultSet 中是否存在列名?

java - 如何删除迭代器循环并允许 cellDateType 在 xlsx java 中工作?

java - 带 GUI 的 BlueJ 时钟显示

java - 在 JDBC 中访问 ResultSet 时,是否有一种优雅的方法来区分空值和实际零值?

SQL 数据库连接中的 java.sql.SQLSyntaxErrorException