如何解析结果集的.equals函数的值?

问题描述 投票:-1回答:1

image showing my jFrame

我正在制作一个框架,该框架使用所示的文本字段一张一张地显示sql表中的记录。在编写下一个按钮的代码时,我需要知道结果集的位置以转到下一个记录。为此,我使用了带有“ if”条件的do-while循环。以下是我的代码:

try{
        Connection conn=null;
        Statement stmt=null;
        ResultSet rs=null;
        String url="jdbc:mysql://localhost/MYORG", userid="root", pwd="shreyansh";
        conn=DriverManager.getConnection(url,userid,pwd);
        stmt=conn.createStatement();
        String query="select * from emp;";
        rs=stmt.executeQuery(query);
        String search=jTextField1.getText();
        String search1=jTextField2.getText();
        double search2=Double.parseDouble(jTextField3.getText());
        String search3=jTextField3.getText();
        rs.first();
        do{
            if(rs.equals(new Object[] {search, search1, search2, search3}))
                break;
        }while(rs.next());
        rs.next();
        String nm=rs.getString("Name");
        String desg=rs.getString("Designation");
        double pay=rs.getDouble("Pay");
        String city=rs.getString("City");
        jTextField1.setText(nm);
        jTextField2.setText(desg);
        jTextField3.setText(pay + "");
        jTextField4.setText(city);
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e.getMessage());
    }

但是它在“结果集结束之后”显示错误。请帮我解决一下这个。也欢迎提出任何使我的代码更好的建议。在此先感谢!

java jdbc resultset
1个回答
0
投票

您不能为此使用ResultSet.equals,因为这不是Object.equals合约的目的。它用于检查一个对象是否等于相同(或至少兼容)类型的另一个对象。因此,Object.equals永远不会等于对象值的数组。

似乎您想从ResultSet表中选择与您的搜索值匹配的一行,在这种情况下,正确的解决方案是仅向数据库询问该行。选择所有行然后在Java应用程序中进行过滤非常低效,因为数据库必须将所有行发送到您的应用程序,而查找数据正是数据库擅长的。

相反,您应该在准备好的语句中使用where子句:

emp
© www.soinside.com 2019 - 2024. All rights reserved.