mySQL データベースに接続されたログイン ページで作業していると、「ユーザー名またはパスワードが正しくありません」という警告が表示され続けます。
取得しているすべての値を出力しましたが、どこが間違っているのかわかりません。
私のテーブルは、bcsapril がテーブルの最初のエントリになるように設定されており、テキストフィールドのユーザー名がデータベースから取得した値と等しくないことが出力されます。if(rs2.next()) を while(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());
}
}