我想確保當用戶輸入用戶名&密碼時,驗證是通過檢查輸入是否與用戶表中的某一行匹配來完成的。以下是目前的代碼:單擊登錄按鈕時不響應。請建議我如何設置正確。由於我試圖驗證用戶名和密碼
private void dbConnection()
{
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/maths_tutor", "root", "jesus");
Statement stmt = conn.createStatement();
String CHECK_USER = "SELECT * FROM records WHERE username = '"+this.txtUser+"' AND password = '"+this.txtPass+"'";
ResultSet rs = stmt.executeQuery(CHECK_USER);
while(rs.next())
{
String user = txtUser.getText();
String pass = txtPass.getText();
if(user.equals(rs.getString("username")))
{
if(pass.equals(rs.getString("password")))
{
this.dispose();
new AboutTo().setVisible(true);
}
else JOptionPane.showMessageDialog(null, "Invalid Password");
}
else JOptionPane.showMessageDialog(null, "Invalid Username or Password");
}
stmt.close();
rs.close();
conn.close();
}
catch(SQLException | ClassNotFoundException er)
{
JOptionPane.showMessageDialog(null, "Exception:\n" + er.toString());
}
}
什麼異常你得到? –
你爲什麼要檢查數據庫的SQL是否工作?如果你得到一個結果,有一場比賽,你不需要檢查它。順便說一句如果你沒有得到一個匹配,它不會返回一個不匹配的隨機記錄,它不會返回任何內容,所以你應該使用'if(rs.next()){ok} else {not ok}' –
這段代碼只是將給定的用戶名和密碼與DB數據進行比較。單擊登錄按鈕時調用此方法的代碼在哪裏? – SudoRahul