1. 程式人生 > >關於JPasswordField的getText()方法過時問題解決

關於JPasswordField的getText()方法過時問題解決

  這幾天想做一個登陸介面,用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(),比較的是字串是否一樣。