检查用户名和密码时出错

时间:2016-10-22 07:46:47

标签: java sql

我目前正在尝试用Java和SQL创建一个登录系统,目前我遇到了错误。

PreparedStatement s1 = con.prepareStatement("SELECT * FROM dbo.Logins WHERE Username=? AND Password=?");
s1.setString(1,loginUsername);
s1.setString(2, loginPassword.toString());
ResultSet rs = s1.executeQuery();

if(rs.next()){
    JOptionPane.showMessageDialog(null, "User Found");
}
else{
    JOptionPane.showMessageDialog(null, "Error");
}

当我运行那段代码时,它总是显示if / else的else部分,我不知道为什么。提前谢谢。

编辑:是的,数据库中填充了用户。 Edit2:我将函数更改为需要两个字符串args。

3 个答案:

答案 0 :(得分:0)

您必须尝试使用​​while(rs.next())代替if(rs.next())

如果这不起作用,您的数据库(您提到的数据库是否已填充)是否包含您要搜索的用户名和密码的特定值?如果没有,那可能就是问题所在。

如果这也不起作用,你可能已经关闭了一些对象(例如s1.close()或con.close())。如需进一步的帮助,您需要提供更详细的整个代码内容。

答案 1 :(得分:0)

对于给定的查询,您可以获取表中可用的行数,如果它大于0,则它将执行User Found语句。

PreparedStatement s1 = con.prepareStatement("SELECT * FROM dbo.Logins WHERE Username=? AND Password=?");
s1.setString(1,loginUsername);
s1.setString(2, loginPassword.toString());
ResultSet rs = s1.executeQuery();

int rowCount = rs.last() ? rs.getRow() : 0; //Number of rows available in table for query

if(rowCount>0)
    JOptionPane.showMessageDialog(null, "User Found");
}
else{
    JOptionPane.showMessageDialog(null, "Error");
}

答案 2 :(得分:0)

public void Login(String user, String pass) throws ClassNotFoundException, SQLException{
        try{
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            MainWindow mw = new MainWindow();
            String userName = "<USERNAME>";
            String password = "<PASSWORD>";
            String url = "<URL>";
            Connection con = DriverManager.getConnection(url, userName, password);
            PreparedStatement s1 = con.prepareStatement("SELECT * FROM dbo.Logins WHERE Username=? AND Password=?");
            s1.setString(1,user);
            s1.setString(2, pass);
            ResultSet rs = s1.executeQuery();           

            //int rowCount = rs.last() ? rs.getRow() : 0; //Number of rows
            System.out.println("Name: " + user + "\nPass: " + pass);

            if(rs.next())
                JOptionPane.showMessageDialog(null, "User Found");

            else{
                JOptionPane.showMessageDialog(null, "Error");
            }
            con.close();