**已关闭。**此问题需要debugging details。它目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
关闭7天前。
Improve this question
大家好
我正在做一个java项目,用netbeans。我有一个名为dbcon
的类,它有一堆方法和一个连接到Mysql数据库的构造函数。一个这样的方法是login方法,它接收2个参数:用户名和密码使用SQL搜索数据库并将结果存储在结果集中。然后我继续使用getString
检索存储的数据并将其存储在一个String变量中。但是,它返回空值。表中用户名和密码的数据类型都是varchar(45)。我之前已经得到了mem_id
值,并且能够正确地使用它执行插入,但是字符串类型有问题。此外,成员变量susername
也返回null,即使我直接从传递的变量username存储它。
public boolean login(String username, String pwd) throws SQLException {
boolean res = false;
String spass;
try {
ResultSet dbuser = stmt.executeQuery("select userpwd.mem_id, upassword, email from userpwd, memdet"
+ " where userpwd.username = '" + username + "' and memdet.mem_id=userpwd.mem_id");
if (dbuser.next()) {
spass = dbuser.getString("upassword");
if ((spass.equals(pwd))) {
res = true;
id = dbuser.getInt("mem_id");
this.susername = username;
this.semail = dbuser.getString("email");
} else {
res = false;
}
}
} catch (SQLException ex) {
}
return res;
}
谢谢
1条答案
按热度按时间iyfjxgzm1#
第二次调用
dbuser.next()
是让结果集前进,这样if
主体就不会进入,你不需要这样,只需要把if
移到另一个里面。比如:
还有很多其他需要改进的地方,比如使用参数设置查询参数,以避免SQL注入攻击,并且不需要执行三个查询,你可以用一个和一个连接来完成。