java.sql.SQLException : Illegal operation on empty result set. Else 语句不起作用

标签 java eclipse user-interface

try {
                    //Class.forName("org.h2.Driver");
                    //Connection conn = DriverManager.getConnection("jdbc:h2:~/test","admin","admin");
                    String m=textField_1.getText();
                    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/logindetails","root","root");
                    //Connection conn1 = DriverManager.getConnection("jdbc:mysql://localhost/logindetails","root","root");


                    String query1="Select * from Details where Username='"+m+"'";
                    PreparedStatement statement1 = conn.prepareStatement(query1);
                    ResultSet res=statement1.executeQuery(query1);
                    res.next();

                    String user;
                    user=res.getString("Username");

                    {

                        if(m.compareTo(user)==0)
                        {

                            JOptionPane.showMessageDialog(null, "CONNECTION SUCCESSFULL & DATA SAVED");

                            DataEntry.this.dispose();
                            login ing= new login();
                            ing.setVisible(true);



                        }

                        else
                        {   

                            String query = "insert into Details values(?,?,?,?,?)";
                            PreparedStatement statement=conn.prepareStatement(query);
                            statement.setString(1, textField.getText());


                            statement.setString(2, textField_2.getText());
                            statement.setString(3, textField_3.getText());
                            statement.setString(4, textField_1.getText());
                            statement.setString(5,String.valueOf(passwordField.getPassword()));
                            statement.execute();

                            }


                    }



                }   

在这个 else 部分不起作用。它抛出错误“对空结果集进行非法操作”。我还交换了两个 if-else 语句的主体,但这对我没有帮助。If 语句主体工作正常。我认为错误是 ResultSet 语句。提前致谢。

最佳答案

您没有检查 ResultSet 是否包含结果。因此,在空 ResultSet 上调用 res.getString("Username") 时会出现异常。

更改:

res.next();

String user;
user=res.getString("Username");

至:

String user = null;
if (res.next())
    user=res.getString("Username");

然后,代替:

if(m.compareTo(user)==0) {
    ...
}

写:

if (user != null) {
    ...
}

关于java.sql.SQLException : Illegal operation on empty result set. Else 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44778067/

相关文章:

Java Swing : How to build Connect 4 GUI

java - Eclipse 插件问题(复制文件)

java - 如何获取eclipse项目依赖?

python - 在 kivy 中嵌套小部件

java - 结尾逻辑错误

java - Eclipse Mars 在 Java 8 Update 71 后无法启动

php - 如何以正确的方式向用户显示错误?

java - 如何不混淆带有列表参数的方法

java - 使用底部导航栏

java - 给定一个类路径资源,有没有办法获取拥有/包含它的 java.io.File 对象?