[英]ResultSet always returns null, no matter what the changes are in JDBC/MySQL, Java
[英]Java SQL Query Resultset always returns null can't find solution
我正在尝试检查用户输入的用户名和密码是否与我的数据库中的用户名和密码匹配,但是我尝试过的结果集仍然为空。 sql 变量设置为用户名,密码设置为密码,但是当我输入正确的详细信息时,它会显示没有结果
public boolean Login(){
boolean valid = true;
try {
String stmt = "SELECT * From TBLUser where User = ? and Password = ? ;";
PreparedStatement pstmt = conn.prepareStatement(stmt);
pstmt.setString(1, sql); pstmt.setString(2, pass);
ResultSet rs = pstmt.executeQuery();
if(!rs.next()){
valid = false;
}
} catch (SQLException e) {
System.err.println("Error: "+e);
}
return valid;
}
另外,更好的做法是:
public boolean Login(String asql, String apass){
boolean valid = true;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String stmt = "SELECT * From TBLUser where User = ? and Password = ? ";
pstmt = conn.prepareStatement(stmt);
pstmt.setString(1, asql);
pstmt.setString(2, apass);
rs = pstmt.executeQuery();
valid = (!rs.next());
} catch (SQLException e) {
e.printStaceTrace();
} finally { // cleanup
try { rs.close(); } catch (Exception ex) {}
try { ps.close(); } catch (Exception ex) {}
}
return valid;
}
应用程序的问题不是代码,而是数据库作为列名之一的用户是保留字,因此此更改解决了问题,感谢@Grayson 提供的所有帮助
public boolean Login(){
boolean valid = true;
try {
String stmt = "SELECT * From TBLUser where UserName = ? and Password = ? ;";
PreparedStatement pstmt = conn.prepareStatement(stmt);
pstmt.setString(1, sql); pstmt.setString(2, pass);
ResultSet rs = pstmt.executeQuery();
if(!rs.next()){
valid = false;
}
} catch (SQLException e) {
System.err.println("Error: "+e);
}
return valid;
}
使用带有“”的单位上限来保存您的列表,例如
创建表“TBLUser”{“用户”字符...“密码”...}
同样,您的选择查询将更改 String stmt = "SELECT * From \\"TBLUser\\" where \\"User\\" = ? and \\"Password\\" = ? "
这应该有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.