Abd*_*dan 1 java mysql database
我想检查表中是否username已经存在database.
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)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是:
database,则没有错误消息:Invalid Username or Password.SQL手动执行查询时:SELECT * From Login我看到该行存在,但由于我过滤了password它,它没有进入while loop.我应该如何使用java来检查MySQL表中是否存在用户名?
小智 6
对于此查询类型,您不需要遍历ResultSet.
你试图找到一个确定的记录.您将不会有两个具有相同用户名/密码的记录(我假设登录表的主键是用户名),所以只需if(rs.next())它就足够了.如果存在,请验证以确定它是否为管理员.
此外,在查询中,您已经暗示记录必须具有指定的用户名和密码,一旦返回结果集,则无需对其进行测试.
只测试用户类型,如果是管理员,则显示相应的消息,否则,执行正确的操作.
如果rs.next()不满足,则用户不存在,因此在else块中,您可以显示有关未找到或无效的用户的错误消息.
小智 5
您需要处理的是MySQL查询.我认为带有该WHERE子句的查询是您正在寻找的.
此外,您可能希望将该代码放在一个单独的类中,以防止烹饪一些意大利面条代码.
下面的链接是一个与php语言相关的答案,但你需要看的是MYSQL query和逻辑: 检查用户名是否存在
尝试这样的事情:
public String login(String uname, String password) throws Exception{
String status=null;
ConnectionHandler handler=new ConnectionHandler(); //class for connection
Connection con=handler.createConnection();
Statement stmt=con.createStatement();
String query="select * from loginTable where username=" +
"\""+uname+"\""+";"; //get username
ResultSet rs=stmt.executeQuery(query);
String checkUser=rs.getString(1);
String checkPass=rs.getString(2);
if(checkUser.equals(uname) && checkPass.equals(password)){
status="True";
}
else{
status="False";
}
con.close();
return status;
}
Run Code Online (Sandbox Code Playgroud)
使用此status字符串我确定用户名是否有效.让SQL做繁重的工作(就像它设计的那样)而不是用java自己编写代码.
| 归档时间: |
|
| 查看次数: |
35962 次 |
| 最近记录: |