Java 如何检索数据库中保存的字段?
ValidateLogin.javaJava 如何检索数据库中保存的字段?,java,mysql,database,netbeans,Java,Mysql,Database,Netbeans,ValidateLogin.java public boolean testLogin(LoginHandler user) { String query = null; try { stmt = connect.createStatement(); query = "SELECT * FROM users WHERE UserName = '"+user.getUsername()+"'"; rs = stmt.exec
public boolean testLogin(LoginHandler user)
{
String query = null;
try
{
stmt = connect.createStatement();
query = "SELECT * FROM users WHERE UserName = '"+user.getUsername()+"'";
rs = stmt.executeQuery(query);
rs.next();
if(rs.getString(2).equals(user.getUsername()) && rs.getString(3).equals(user.getPassword()))
{
this.closeDB();
return true;
}
else
{
JOptionPane.showMessageDialog(null,"Login Failed: Invalid Password");
}
}
catch(SQLException ex)
{
JOptionPane.showMessageDialog(null,"Login Failed: Invalid Username");
}
this.closeDB();
return false;
}
LoginHandler.java
public boolean verifyUser()
{
if(super.testLogin(this))
{
mainWindow mainwindow = new mainWindow();
mainwindow.setVisible(true);
return true;
}
return false;
}
我已经在数据库中保存了用户名和密码字段。。
如何在我的登录窗口中检索它们
每次我输入用户名和密码。。它显示的消息是:“登录失败:密码无效”
有人帮忙吗???试试这个
PreparedStatement ps = connect.prepareStatement("SELECT * FROM users WHERE UserName =?");
ps.setString(1,user.getUsername());
rs = ps.executeQuery();
使用列名而不是索引值
uname和pass是可变的
while (rs.next()) {
uname=rs.getString("UserName");
pass=rs.getString("Password");
}
if(uname.equals(user.getUsername()) && pass.equals(user.getPassword()))
{
this.closeDB();
return true;
}
你需要调试,首先检查rs.next()给了你什么。对还是错我不知道。。我们的老师刚刚给了我们这些代码。是的,这就是为什么我要告诉你调试使用调试器来找出结果集中的值在“if”语句之前。如果您不知道如何使用调试器,请尝试插入
System.out.println(“|”+rs.getString(2)+“|”+rs.getString(3)+“|”)代码>在“if”语句之前,这样您就可以看到数据库中的值是否符合您的期望。您能告诉我如何操作吗?因为我们的老师没有向我们解释那个代码。。我不知道如何调试代码。。你能帮我吗?在DB中用户名和密码将存储的列名是什么用户名和密码仅是我数据库中的字段,在username=admin中;Password=admin是savedtry rs.getString(0)并且rs.getString(1)尝试了它。。但是什么也没发生。。它显示无效的用户名