0

我有一个名为 userinfo 的 mySQL 表,其中包含列-userId、userName、Password、city、age-userId 是 Pkey 和 Autoincremnt

当用户登录 login.jsp 时,他提交用户名和密码。

login.jsp 的这两个参数在 UserLogin servlet 中接收,然后在 userinfo 表中检查。如果匹配,他可以登录。

我尝试了 SELECT 但我收到了很多错误。正确的方法应该是什么:-

try {           

         String sql = "Select UserName, UserPW From  SocialNetwork.RegisteredUser";

           conn = ConnectionFactory.getConnection();

           PreparedStatement ptmt = (PreparedStatement) conn
                    .prepareStatement(sql);

         ptmt.executeQuery();

         Statement stmt = (Statement) conn.createStatement();
        s = connection.prepareStatement("select id_usuario, id_grupo from usuarios_grupos where id_grupo = ?");

            //storing user data in ResultSet
            ResultSet rs = stmt.executeQuery(sql);


            while (rs.next())  {
            String refName = rs.getString("UserName");

            String refPass = rs.getString("UserPW");

            if (user.equals(refName) && pw.equals(refPass) ) {
                out.println("<html>");
                out.println("<body>");
                out.println("You are In");
                out.println("</body>");
                out.println("</html>");

                System.out.println("sucess");   


            }


           }
     }catch (SQLException e) {

        e.printStackTrace();
    }
4

2 回答 2

0

通过使用Statement 接口,您不能动态设置值。使用PreparedStatement接口进行第二次查询。

在你的班级中导入包 import javas.sql.*;

try {           

         String sql = "Select UserName, UserPW From  SocialNetwork.RegisteredUser UserName = ?";
         conn = ConnectionFactory.getConnection();
         PreparedStatement ptmt =conn.prepareStatement(sql);
           ptmt.setString(1, user)
          ResultSet rs= ptmt.executeQuery();
            while (rs.next())  {
            String refName = rs.getString(1);//field index of user name
            String refPass = rs.getString(2);//field index of password

            if (user.equals(refName) && pw.equals(refPass) ) {
                out.println("<html>");
                out.println("<body>");
                out.println("You are In");
                out.println("</body>");
                out.println("</html>");
                System.out.println("sucess");   
            }
       }
     }catch (SQLException e) {
        e.printStackTrace();
    }
于 2013-08-27T10:59:46.827 回答
-1

您要完整的代码清单吗?在您当前的代码中,您似乎无缘无故地执行了一些查询,然后获取所有用户的列表并遍历他们以寻找匹配项。尝试使用类似的查询

sql ="Select UserName, UserPW From  SocialNetwork.RegisteredUser where UserName=?"
ResultSet rs = stmt.executeQuery(sql);

然后检查代码中的密码

if(rs.next()){
  String refPass = rs.getString("UserPW");
  if (pw.equals(refPass) )
}
于 2013-08-27T10:21:12.827 回答