Java 无法使登录应用程序正常工作

Java 无法使登录应用程序正常工作,java,jdbc,Java,Jdbc,由于某种原因,此方法总是返回false。我已输入正确的凭据,并尝试返回false,但没有返回给来电者。请帮忙 public Boolean validate(String username, String password) { System.out.println(username); System.out.println(password); try { Class.forName("com.mysql.jdbc.Driver");

由于某种原因,此方法总是返回false。我已输入正确的凭据,并尝试返回false,但没有返回给来电者。请帮忙

public Boolean validate(String username, String password) {

    System.out.println(username);
    System.out.println(password);

    try {

        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/login?"+"user=Naveen&password=Naveen");

        String sql = "select * from login.user where username=? and password=?";

        PreparedStatement pst = conn.prepareStatement(sql);

        pst.setString(0, username);
        pst.setString(1, password);

        ResultSet rs = pst.executeQuery();

        if(rs.next()){
            return true;
        }else{
            return false;
        }

    } catch (Exception e) {
        return false;
    }
}

PreparedStatement
的参数索引从
1
开始,而不是
0
。设置参数的正确方法是:

PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
pst.setString(2, password);

我还建议对
可关闭的
资源使用try-with-resources块,例如
连接
准备语句
。或者,如果您使用的是Java Previor 7,至少要在finally块中关闭它们。

根代码的情况是,您的代码总是进入catch块并返回
false

您应该为
PreparedStatement
clasure使用正确的索引第一个值应该是1而不是0


注意:您还应该以正确的方式处理
异常
(至少在控制台中打印错误消息,这将是非常有用的)

此外,请在catch块中添加system.out.println(e)以获取实际错误。根据你的代码,无论你得到什么错误,它都会返回为false,并且不会指出错误是的,我会这样做,谢谢!