【发布时间】:2015-05-17 19:51:59
【问题描述】:
我在 jsp 文件中编写了以下代码。基本上它的作用是检查是否有任何具有特定银行名称、卡号和密码的数据。为了检查这一点,我使用了选择查询。 .查询是正确的,但结果集返回false..我什至单独检查了查询..它工作正常..这段代码有问题吗??请帮助..我使用 netbeans 作为我的 IDE 和 Derby 数据库..
String URL="jdbc:derby://localhost:1527/Bank Database";
try{
Connection cn=DriverManager.getConnection(URL,"Bank","Bank");
String qry="SELECT * FROM DATABASE WHERE BANK='"+bname+"' AND CARD_NO='"+cname+"' AND PASWORD='"+pswrd+"'";
Statement sq=cn.createStatement();
ResultSet rs=sq.executeQuery(qry);
if(rs.next()){
if(rs.getString("PASWORD").equals(pswrd))
{
cn.close();
out.println("<script>function redirect(){ window.location=\"scsfl.html\";} setTimeout('redirect()',3000);</script>"); //redirects to another page
}
}
else{
cn.close();
out.println("<script>function redirect(){ window.location=\"failed.html\";} setTimeout('redirect()',3000);</script>");
}
}catch(Exception e){ System.out.print(e);}
【问题讨论】:
-
既然是JSP,我不知道
System.out去哪里了,但是你检查过服务器日志吗? -
ya.. 没有错误..
-
你应该认识Little Bobby Tables。
-
你做错了。您应该使用
PreparedStatement,并且 SQL 查询已经检查了密码,因此您无需自己执行此操作:您只关心是否有结果。 -
但这很难相信。你真的拼错了
PASWORD吗?两次?如果是这样,为什么列名在数据库中拼写错误?你确定到底发生了什么吗?有三种可能性,而不是两种:(a)ResultSet.next()返回 false; (b) 比较密码返回错误;或 (c)ResultSet.next()返回 true 并且比较密码也成功。您的代码没有记录所有三种可能性。