我有一个数据库,它有一个表 user
它由许多属性组成,如姓名、电子邮件等。它还具有 username
和password
在 VARCHAR 数据类型中。我写了两个类LoginModel
和Controller
。 Controller 有方法 loginit
通过它检查是否 login
方法来自LoginModel
返回 true 或 false。我无法找出原因LoginModel
总是返回 false。请帮忙。
这是我的方法:
来自 LoginModel 类
public boolean login(String userid, String userpass) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String query = "SELECT * FROM user WHERE username = ? AND password = ?";
try{
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1,userid);
preparedStatement.setString(2,userpass);
resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
return true;
}
else {
// System.out.println(resultSet.next());
return false;
}
}
catch (Exception e){
return false;
}
finally {
preparedStatement.close();
resultSet.close();
return false;
}
}
来自 Controller 类
public void loginit() throws SQLException {
String userid = uid.getText();
String userpass = upass.getText();
try {
if (loginmodel.login(userid, userpass)) {
lblstatus.setText("YES");
}
else
lblstatus.setText("Invalid");
} catch (SQLException e) {
lblstatus.setText("No");
e.printStackTrace();
}
}
这是一个 JavaFX 应用程序。 userid
和userpass
分别是文本字段和密码字段的 ID。 lblstatus
是始终显示 Invalid
的标签,不明白为什么!
这是我的数据库的快照
最佳答案
从 finally
block 中删除 return false
。如果没有异常,它将在执行的情况下执行。
finally {
preparedStatement.close();
resultSet.close();
return false;
}
将代码更改为:
public boolean login(String userid, String userpass) throws SQLException {
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
String query = "SELECT * FROM user WHERE username = ? AND password = ?";
try{
preparedStatement = connection.prepareStatement(query);
preparedStatement.setString(1,userid);
preparedStatement.setString(2,userpass);
resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
return true;
}
else {
// System.out.println(resultSet.next());
return false;
}
}
catch (Exception e){
return false;
}
finally {
preparedStatement.close();
resultSet.close();
}
return false;
}
关于java - 即使 SQLite 数据库中存在数据也无法登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43026199/