SQL 尝试执行对sqlite 数据库的查询时出现异常错误

SQL Exception error when trying to execute the query to sqllite database

我正在尝试从登录应用程序查询数据库到 SQLite 数据库。一旦用户输入用户名和密码并单击回车,它应该检查数据库中的凭据。当我点击登录按钮时,它显示:

java.sql.SQLException:sql error or missing database

为了更好的理解,下面是代码。代码中有什么错误?

注:


try
{
    String query="select * from Login where username=? Password=?";
    PreparedStatement pst=connection.prepareStatement(query);
    pst.setString(1, userField.getText());
    pst.setString(2, passwordField.getText());
    ResultSet rs=pst.executeQuery();
    int count=0;
    
    while(rs.next()) {
        count=count+1;
    }
    
    if(count==1) {
        JOptionPane.showMessageDialog(null, "Username and Password is correct");
    }
    else if (count>1)
    {
        JOptionPane.showMessageDialog(null, " Duplicate Username and Password is correct");
    }
    else
    {
        JOptionPane.showMessageDialog(null, "  Username and Password is not correct");
    }
    rs.close();
    pst.close();

} catch(Exception e){
    JOptionPane.showMessageDialog(null, e);
}
String query="select * from Login where username=user123 Password=password123";
PreparedStatement pst=connection.prepareStatement(query);
pst.setString(1, userField.getText());
//pst.setString(2, passwordField);

使用 PreparedStatement 的基础应该是这样的:

String query="select * from Login where username = ? and Password = ?";
PreparedStatement pst=connection.prepareStatement(query);
pst.setString(1, userField.getText());
pst.setString(2, passwordField.getText());

也就是查询字符串表示要在字符串中添加参数的地方。然后,您需要将参数替换为 GUI 文本组件中的值。

另外,为什么要有一个 while 循环?查询的重点不是确定是否在数据库中找到 userid/password 吗?如果是这样,ResultSet 中只能有一个条目 returns。

阅读 JDBC Database Access 部分了解 SQL 基础知识。

本题与Swing无关。首先了解如何通过在 setString(...) 方法中硬编码 userid/password 值来正确执行 SQL 查询。完成此操作后,您将尝试使用从 GUI 中的文本字段获取的动态数据进行查询。