什么是(rs.next)发生的事情

时间:2016-06-26 05:57:45

标签: java jdbc resultset

try {
    setPassword(txtPassword.getText());
    setUsername(txtUserName.getText());

    MessageDigest md;

    md = MessageDigest.getInstance("MD5");
    byte messgeDigest[] = md.digest(getPassword().getBytes());
    BigInteger number = new BigInteger(1, messgeDigest);
    String hashtext = number.toString(16);

    String qry = "SELECT * FROM users WHERE username=? AND password=?";
    pst = mscon.conn().prepareStatement(qry);
    pst.setString(1, getUsername());
    pst.setString(2, hashtext);
    rs = pst.executeQuery();

    if (rs.next()) {
        JOptionPane.showMessageDialog(null, "Login Successful");
        System.out.println("Login");
    }
    else{
        System.out.println("Tri again");
    }
} catch (NoSuchAlgorithmException ex) {

} catch (SQLException ex) {
    Logger.getLogger(MS_Login.class.getName()).log(Level.SEVERE, null, ex);
}

在此代码中,if(rs.next)部分不起作用。我尝试在该块中打印一些单词,但它没有显示出来。什么是问题?

2 个答案:

答案 0 :(得分:1)

rs.next()尝试检索下一行。如果返回一行,则返回true,如果没有更多行返回false

显然,您的查询不会返回任何行。

调试程序以显示参数值(通过在调试模式下运行,或者只是将值打印到stdout)。

答案 1 :(得分:-1)

如果结果集中存在任何记录,

rs.next()将返回。它不适合你,因为你的resutset是空的。尝试调试并检查正在执行的查询的结果。