我有这段代码。
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:问题解决了,,,
答案 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任务。