亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解析結果集的 .equals 函數的值?

如何解析結果集的 .equals 函數的值?

慕斯709654 2024-01-28 15:59:00
顯示我的 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());    }但它顯示“結果集結束后”錯誤。請在這件事上給予我幫助。也歡迎任何使我的代碼變得更好的建議。提前致謝??!
查看完整描述

1 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

您不能用于ResultSet.equals此目的,因為這不是Object.equals合同的用途。它用于檢查一個對象是否等于相同(或至少兼容)類型的另一個對象。因此, AResultSet永遠不會等于對象值數組。

看起來您想從表中選擇與emp您的搜索值匹配的一行,在這種情況下,正確的解決方案是僅向數據庫詢問該行。選擇所有行然后在 Java 應用程序中進行過濾效率非常低,因為數據庫必須將所有行發送到您的應用程序,而查找數據正是數據庫所擅長的。

相反,您應該使用帶有準備好的語句的 where 子句:

try (Connection connection = DriverManager.getConnection(url, userid, pwd);

? ? ?PreparedStatement pstmt = connection.prepareStatement(

? ? ? ? ?"select * from emp where Name = ? and Designation = ? and Pay = ? and City = ?")) {

? ?pstmt.setString(1, search);

? ?pstmt.setString(2, search1);

? ?pstmt.setDouble(3, search2);

? ?pstmt.setString(4, search3);

? ?try (ResultSet rs = pstmt.executeQuery()) {

? ? ? ?if (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(String.valueOf(pay));

? ? ? ? ? ?jTextField4.setText(city);

? ? ? ?} else {

? ? ? ? ? ?// handle not found case

? ? ? ?}

? ?}?

}


查看完整回答
反對 回復 2024-01-28
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號