我想检查一个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