我想檢查一個database
表中是否已存在username
表。Java - 如何檢查在MySQL表中是否存在用戶名
Java代碼:
if (e.getSource() == jButton2)
{
U = jTextField1.getText();
if (jTextField1.getText().trim().equals(""))
{
JOptionPane.showMessageDialog(this, "Please Write Username !");
}
else if (jPasswordField1.getText().equals(""))
{
JOptionPane.showMessageDialog(this, "Please Write Password !");
}
else
{
try {
String Driver = "com.mysql.jdbc.Driver";
String URL = "jdbc:mysql://localhost:3306/LoginForm";
Class.forName(Driver);
Connection Conn = DriverManager.getConnection(URL, "root", "12345");
Statement S = Conn.createStatement();
ResultSet RS = S.executeQuery(
"SELECT * FROM login where username ='" + U +
"' and Password ='" + jPasswordField1.getText() + "'");
while (RS.next()) {
String Username = RS.getString("Username");
String Password = RS.getString("Password");
String Admin = RS.getString("Admin");
if (Username.equals(U) & Password.equals(jPasswordField1.getText()) &
Admin.equals("0"))
{
JOptionPane.showMessageDialog(this, "Logged In Successfully !");
this.dispose();
NormalUsers NU = new NormalUsers();
break;
}
else if (Username.equals(U) &
Password.equals(jPasswordField1.getText()) & Admin.equals("1"))
{
JOptionPane.showMessageDialog(this,
"Logged In Successfully , Opening Administration Panel !");
this.dispose();
AdminPanel AP = new AdminPanel();
break;
}
else
{
JOptionPane.showMessageDialog(this, "Invalid Username Or Password!");
}
}
}
catch (SQLException | ClassNotFoundException ex)
{
}
}
}
的問題是:
- 如果有在
database
沒有行,那麼就沒有一個錯誤信息:Invalid Username or Password
。 - 當我手動執行
SQL
查詢時:SELECT * From Login
我看到該行在那裏存在,但由於我在password
上過濾,因此它不會進入while loop
。
我該如何使用java來檢查用戶名是否存在於MySQL表中?
我試過沒有循環,沒有做任何事情! – 2013-04-07 16:25:48
如果您嘗試使用確實存在的用戶/密碼,那麼這是與查詢相關的問題。如果您嘗試使用不存在的用戶/密碼,您是否將'else'塊放在'if(rs.next())'上? – Noe 2013-04-07 16:35:05
是啊我認爲這是一個查詢相關的問題.. – 2013-04-07 16:56:23