關於JPasswordField的getText()方法過時問題解決
阿新 • • 發佈:2018-11-17
這幾天想做一個登陸介面,用Jframe做,連線資料庫時發現JPasswordField的getText()過時了,沒法使用。查了資料發現改成了:
try{ String sql="SELECT * FROM username WHERE name=?"; conn = DB.getConnection(); prst = conn.prepareStatement(sql); String lll= Login.getText(); System.out.println(lll); prst.setString(1,lll); prst.execute(); rs = prst.executeQuery(); if (rs.next()){ if( String.valueOf( regi.getPassword()).equals(rs.getString(3))){ JOptionPane.showMessageDialog(Main, "成功", "錯誤",JOptionPane.WARNING_MESSAGE); }else { System.out.println(rs.getString(3)); System.out.println(regi.getPassword().toString()); JOptionPane.showMessageDialog(Main, "賬戶密碼錯誤", "錯誤",JOptionPane.WARNING_MESSAGE); } }else{ JOptionPane.showMessageDialog(Main,"無此使用者", "錯誤",JOptionPane.WARNING_MESSAGE); } }catch (Exception e1){ e1.printStackTrace(); } finally { DB.close(rs); DB.close(prst); DB.close(conn); } }
-
if(regi.getPassword.toString.equals(rs.getString(3)))){
.............//資料庫裡面列是從1開始的所以密碼是三列
}
會出現以下錯誤:
第二個是System.out.println(regi.getPassword.toString);
查資料發現這個toString方法是object的方法,返回的是HashCode
改成
-
if( String.valueOf( regi.getPassword()).equals(rs.getString(3))){
.................
}
就完全正確了,成功取出了密碼的字串。
還有就是不能用==,這樣比較的是記憶體位置是否一樣。
用.equals(),比較的是字串是否一樣。