這幾天想做一個登陸界面,用Jframe做,連接資料庫時發現JPasswordField的getText()過時了,沒法使用。查了資料發現改成了: try{ String sql="SELECT * FROM username WHERE name=?"; conn = DB.getConnectio ...
這幾天想做一個登陸界面,用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(),比較的是字元串是否一樣。