我一直在連接到一個mySQL數據庫的登錄頁面,它一直在觸發「錯誤的用戶名或密碼警報」。登錄頁面的錯誤與數據庫檢索
我打印出所有的值,並且找不到我錯在哪裏。
我的表格是以bcsapril是表格中的第一個條目的方式設置的,它打印出來的文本字段中的用戶名不等於從數據庫中檢索到的值。 和IVE試圖改變 如果(rs2.next()) 成 而(rs2.next())
下一幀露面但即時得到的「不正確」的消息中的相同的次數作爲數據庫中條目的數量。
我唯一的問題是爲什麼「bcsapril」總是我的代碼正在檢索的用戶名。任何幫助都會很棒。
if(evt.getKeyCode() == KeyEvent.VK_ENTER){
String user = userTx.getText();
String pwd = new String (passTx.getPassword());
String sql = "SELECT * FROM accounts";
boolean loggedIn = false;
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/dardb","root","1234");
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs2 = stmt.executeQuery(sql);
while(rs2.next()) {
String uname = rs2.getString("username");
String password = rs2.getString("password");
if((user.equals(uname)) && (pwd.equals(password))){
loggedIn = true;
}
}
if(loggedIn){
DarDBMainFrame x = new DarDBMainFrame();
x.setVisible(true);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
setVisible(true);
x.setUsername(user);
pack();
setUser(user);
dispose();
}else{
JOptionPane.showMessageDialog(this, "Incorrect Username or Password!", "Login Error", JOptionPane.ERROR_MESSAGE);
System.out.println(user);
System.out.println(pwd);
}
}catch (ClassNotFoundException | SQLException | HeadlessException e){
JOptionPane.showMessageDialog(this, e.getMessage());
}
}
同一件事:( 日誌中,但仍顯示「不正確的用戶名和密碼」的4倍 – MrZooYork 2013-04-23 03:36:47
你肯定你有「不正確的用戶名和密碼」的while()循環之外? – nullPainter 2013-04-23 03:37:40
如果正在顯示它的4倍,那麼你在循環內,100%。你應該有內部迴路標誌變量。如果你發現1場,設置標誌爲true。如果發現不匹配,設置標誌設置爲false。一旦你退出循環,顯示相應的味精。順便說一句,如果你找到了比賽,打破當場循環。您可以發佈更新的代碼? – 2013-04-23 03:42:15