servlet中的ResultSet不包含任何值

时间:2013-04-22 09:13:26

标签: java servlets resultset

这是我的servlet代码......

 try {
        HttpSession session=request.getSession(true);
        String FN= (String)session.getAttribute("FN");
        String h1= request.getParameter("h1"); //contains the password value

        if(h1=="" || h1== null)
        {
            response.sendRedirect("PERROR.html");   // if no value in passwrd field

        }

  else{

        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
        Connection con = DriverManager.getConnection("jdbc:odbc:dsn2");
        Statement st=con.createStatement();

        String UNM= (String)session.getAttribute("uname");
        String query= "select * from img_pwd where uname='"+UNM+"' and pwd='"+h1+"')";
                  // validating from the table img_pwd

        ResultSet r= st.executeQuery(query);

        if(r.next())
        {

            con.close();


            response.sendRedirect("ACCOUNT.jsp");  //success, go to dashboard

        }
        else
        {

            response.sendRedirect("PERROR.html"); // if the password-mismatches

        }



 }


    } finally { 
        out.close();
    }

表格“img_pwd”如下所示 -

1. uname(nvarchar[50])
2. pwd(nvarchar[20])

所以我尝试了调试,发现程序执行到达查询存储在字符串中的位置,但查询没有执行,程序的进度在存储QUERY STRING之后就停止了....

我无法找出错误,需要帮助..

4 个答案:

答案 0 :(得分:1)

好吧,这看起来很有趣......但我现在意识到我浪费了5个小时只因为一个关闭的支架..

"select * from img_pwd where uname='"+UNM+"' and pwd='"+h1+"')"

你可以找出“)” .. ??? 是的,那是错误的。删除后,代码工作正常。

答案 1 :(得分:0)

您可以尝试以下操作:

  1. 尝试将您的查询更改为类似select * from table的内容,您确定应该有一些结果,以确保您对数据库的访问按预期工作。
  2. 修剪开头或结尾的任何空格的'uname'和密码,这可以解释为什么您的查询无法找到值,并确保您测试的值存在于数据库表中。
  3. 根据您的DBMS,您可以考虑使用类似的运算符"%"

答案 2 :(得分:0)

在连接数据库时可能有任何异常,你没有提到catch块,所以放一个catch并调试。

答案 3 :(得分:0)

是从

删除“)”

“select * from img_pwd where uname ='”+ UNM +“'and pwd ='”+ h1 +“')”

您的查询字符串应如下所示:

从表格中选择*