您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ResultSet.getString(1)引发java.sql.SQLException:当前光标位置的无效操作

ResultSet.getString(1)引发java.sql.SQLException:当前光标位置的无效操作

您应该next首先使用该语句。

ResultSet set = statement.executeQuery();
if (set.next()) {
    userName = set.getString(1);
    //your logic...
}

更新

正如Java 6文档所说

ResultSet游标最初位于第一行之前;第一个方法调用接下来使第一行成为当前行;第二个调用使第二行成为当前行,依此类推。

这意味着当您执行句子时

ResultSet set = statement.executeQuery();

set将创建ResultSet 并指向数据第一个结果之前的行。您可以这样看:

选择电子邮件,名字来自注册信息

    email              | firstname
    ____________________________________
0                                        <= set points to here
1   email1@gmail.com   | Email1 Person
2   foo@bar.com        | Foo Bar

因此,在打开ResulSet之后,您将执行next将其移至第一行的方法

if(set.next())

现在set看起来像这样。

    email              | firstname
    ____________________________________
0
1   email1@gmail.com   | Email1 Person   <= set points to here
2   foo@bar.com        | Foo Bar

如果需要读取ResultSet中的所有数据,则应使用一阵子而不是if:

while(set.next()) {
    //read data from the actual row
    //automatically will try to forward 1 row
}

如果set.next()返回false,则意味着没有要读取的行,因此while循环将结束。

更多信息在这里

SQLServer 2022/1/1 18:14:08 有556人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶