java - 总是收到错误 "after end Result set"并且所有结果集都已关闭

标签 java mysql

我想制作一个 Java 应用程序,当我单击按钮时,它可以在浏览器中打开 Google map 。我可以从 MySQL 数据库中获取位置、纬度和经度。但是,如果我正在运行该类(class),即使所有结果集都已关闭,也会始终出现“结果结束后”。这是我的代码:

while(rs.next()) {
                String getKodeLokasi = rs.getString("kode_lokasi");
                if ((kode_lokasi.equals(getKodeLokasi))){
                    check = true;
                }
                break;
            }

if (check) {
    String latitude = "SELECT latitude FROM data_lokasi WHERE kode_lokasi = '"+kode_lokasi+"'";
    String getLat = rs.getString("latitude");    <<<<----- After end of result set

    String longtitude = "SELECT longtitude FROM data_lokasi WHERE kode_lokasi = '"+kode_lokasi+"'";
    String getLong = rs.getString("longtitude");

    String lokasi = "SELECT lokasi FROM data_lokasi WHERE kode_lokasi = '"+kode_lokasi+"'";
    String getLokasi = (rs.getString("lokasi")).replace(" ", "+");

    if(Desktop.isDesktopSupported()){    
         Desktop.getDesktop().browse(new URI("https://www.google.co.id/maps/place/'"+getLokasi+"'/@'"+getLat+"','"+getLong+"',17z/"));
    }                          
} else {              
    JOptionPane.showMessageDialog(this, "Can't find code!");
}

我的代码有什么问题?之前谢谢,请帮助我:')

最佳答案

您一直滚动到 ResultSet 的末尾。此时,它不再位于有效行上,因此没有可读取的列值。特别是,您不能从 kode_lokasi.equals(getKodeLokasi) 评估为 true 的行中读取任何值。

如果您希望不超过一行,则将 while 循环更改为 if block ,以便 rs.next()只被调用一次。如果您需要容纳多个结果行,那么当您找到要查找的结果行时,您可能需要break 跳出循环,以便 rs.next() 不再对 ResultSet 调用。

这里的主题是,如果你想从满足条件的结果行中读取值,那么在找到该行后你不能移动到另一行。

关于java - 总是收到错误 "after end Result set"并且所有结果集都已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39712009/

相关文章:

java - Gradle:多个java项目的公共(public)资源依赖

java - 如何获取USB设备是连接在USB3.0还是USB2.0口

java - 用于 JDBC 的 MariaDB 连接器,用于查询在 PhPMyAdmin 中创建的数据库

javascript - 如何在ajax中放置条件警报框

MySQL:使用另一个表中的值计算表中的记录数

java - StringTemplate 将字符串渲染为大写

java - 从网页中获取文本的背景颜色

mysql - Spring和MySQL存储过程

php - mysql数据的文本搜索技术

mysql - 避免在 Node js 中的 SQL LIKE 查询中注入(inject)