这条检测语句为什么不对啊,是检测我输入的用户名和密码是否于数据库的相等,那两个字段分别是第二个和第三个字段!
**************************************************************************************************
public boolean checkLogin(String userName, String passwd) {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select userName,passwd from bankproject";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
System.out.println(passwd);
while (rs.next()) {
if (userName.equals(rs.getString(2)) && passwd.equals(rs.getString(3))) {
break;
}
}
return true;
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
原因:
你的程序无论怎么检测,都返回true,局部代码改成这样
while(rs.next()){
if(userName.equals(rs.getString(2)) && passwd.equals(rs.getString(3))){
return true;
}
}
return false;
同时应该增加对资源的释放,异常处理完善。
同时你的编号是1和2,不是2和3, 因为你的sql只有2个字段啊!
完整代码如下
public boolean checkLogin(String userName, String passwd) {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select userName,passwd from bankproject";
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
System.out.println(passwd);
while (rs.next()) {
if (userName.equals(rs.getString(1)) && passwd.equals(rs.getString(2))) {
return true;
}
}
return false;
} catch (SQLException e) {
e.printStackTrace();
return false;
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception ex) {}
}
if (ps != null) {
try {
ps.close();
} catch (Exception ex) {}
}
}
}