gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:32:08 26 4
gpt4 key购买 nike

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/

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