为什么不进入if条件?

时间:2014-09-13 03:32:26

标签: java

我有这段代码。

public String Login(String email, String password) {
    String mode = "";

    try {
        con = DriverManager.getConnection(url, userdb, passdb);
        Statement select = con.createStatement();
        ResultSet result = select.executeQuery("SELECT * FROM doit WHERE DoitEmail='" + email + "' AND DoitPassword='" + password + "'");

        if (result.first()) {
            mode = "doit";
        }

    } catch (SQLException ex) {

    }
    return mode;
}

似乎问题是为什么它不会在mode语句中返回if的值。

换句话说,为什么它不执行if语句块,当我调试时,它直接转到return mode而没有为mode设置新值?

更新:我正在使用新代码......(最后有单引号..)

UPDATE2:问题解决了,,,

2 个答案:

答案 0 :(得分:3)

您错过了结束语,更改:

DoitPassword='"+password+""

到:

DoitPassword='"+password+"'"

此外,就像上面已经评论过的那样,在没有(至少)打印错误的情况下捕获异常是不好的做法。

最后,我想向您介绍一位好朋友: Bobby Tables

答案 1 :(得分:1)

它没有进入if条件,因为ResultSet的光标不在第一行。
仅当result.first()的光标指向第一行时,true方法才会返回ResultSet。 在致电result.isFirst()之前,请尝试拨打result.next()或致电result.first() 希望这可以帮助!

<强>相依
您可以尝试使用MySQL JDBC Utilities API来轻松完成Java-MySQL任务。