servlet中的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])

所以我试过调试,发现程序执行到达查询存储在字符串中的地方,但查询不执行,程序的进度在存储查询字符串....

后停止我无法找出错误,需要帮助。

看起来很有趣…但我现在意识到,我浪费了5个小时,就因为一个结束括号。)

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

你能弄清楚…??是的,那是个错误。删除后,代码工作正常

可能在连接数据库时出现任何异常,您没有提到catch块,因此请放置catch并调试

您可以尝试以下操作:

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

是,从

" select *从img_pwd uname ="新墨西哥大学+"+"和pwd = " + h1 + ") "

你的查询字符串应该像这样:

select * from table

相关内容

  • 没有找到相关文章

最新更新