始终在“结束结果集”之后得到错误,并且所有结果集已经关闭

时间:2016-09-26 20:41:21

标签: java mysql

我想制作一个Java应用程序,当我点击按钮时,它可以在浏览器中打开谷歌地图。我可以从MySQL数据库中获取位置,纬度和经度。但是,如果我正在运行该类,即使所有结果已经关闭,“结果结束后”也会一直显示。这是我的代码:

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!");
}

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

1 个答案:

答案 0 :(得分:1)

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

如果您希望不超过一行,请将while循环更改为if块,以便仅调用rs.next()一次。如果您需要容纳多个结果行,那么当您找到要查找的结果行时,可能需要break离开循环,以便rs.next()不会在{ResultSet上调用1}}再次。

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