簡體   English   中英

Servlet中的ResultSet不包含任何值

[英]ResultSet in servlet contains no values

這是我的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之后,程序的進程也停止了。

我想找出錯誤,需要幫助。

以及它似乎滑稽......但現在我已經意識到我浪費了,只是因為一個右括號我5小時..)

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

你能找出“)”嗎?。??? 是的,那是錯誤。 刪除它后,代碼工作正常。

您可以嘗試以下方法:

  1. 嘗試將查詢更改為類似於select * from table查詢,在該查詢select * from table ,您應該確定會有一些結果,以確保對數據庫的訪問按預期進行。
  2. 修剪'uname'和密碼的開頭或結尾的任何空格,這可以解釋為什么查詢無法找到值,並確保測試的值存在於數據庫表中。
  3. 根據您的DBMS,您可以考慮使用類似運算符"%"

與數據庫連接時可能沒有任何異常,而您沒有提到catch塊,因此請進行catch和調試。

是的,從中刪除“)”

“從img_pwd中選擇*,其中uname ='” + UNM +“'和pwd ='” + h1 +“')”

您的查詢字符串應如下所示:

從表中選擇*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM