Servlets 如何在插入servlet之前检查用户名和密码

Servlets 如何在插入servlet之前检查用户名和密码,servlets,Servlets,我想在将详细信息插入表之前检查用户名和密码。如果用户名和密码与另一个表中的用户名和密码匹配,则只允许插入详细信息。如何操作?请提供代码 我正在使用NetBeans 7.0.1和mysql数据库 我的代码是:- String query1,pass1; query1 = "select username,password from login"; stmt.executeQuery(query1); ResultSet rs = stmt.getResultSet(

我想在将详细信息插入表之前检查用户名和密码。如果用户名和密码与另一个表中的用户名和密码匹配,则只允许插入详细信息。如何操作?请提供代码

我正在使用NetBeans 7.0.1和mysql数据库

我的代码是:-

String query1,pass1;

query1 = "select username,password from login";
stmt.executeQuery(query1);


             ResultSet rs = stmt.getResultSet();


             while(rs.next())   
             {
               user1 = rs.getString("username") ;

               pass1 = rs.getString("password");

               if(user1.equals("username") && user1.equals("password"))
               {
                 query = "insert into units (IO_number,Physical_progress,Financial_progress,Final_Completion_Date)values('"+IO_number+"','"+Physical_progress+"','"+Financial_progress+"','"+Final_Completion_Date+"')"; 

                 int i = stmt.executeUpdate(query);

               }
             }

您已经掌握了第一个查询的基本知识,但现在看来,这是危险的,也是一种负担,因为它容易受到SQL注入的攻击

在本例中,我将向您展示如何使用preparedstatements进行查询(这更安全),以及如何检查给定用户名和密码组合中是否存在任何用户)


为了进一步阅读,我建议您看看

请避免重复,您已经在这里发布了这个问题:使用执行查询。这非常适合SQL注入。这个代码应该做什么?您甚至没有运行第一个查询。不,您的问题是“如何在插入servlet之前检查用户名和密码”,因此,我向您展示了具体的操作方法。但我想您想要的是基于这些表中的冗余字段合并两个表?这意味着在向数据库中插入值之前,我如何检查用户名和密码…以便确定其是否有效…如何在插入记录之前检查用户名和密码数据库…先生,请帮帮我…我的例子怎么不这么做?我想你不明白用户名和密码的用途。如果您想在两个不同的表之间匹配用户(这似乎是您最终想要做的),您可以只使用用户的数字ID,或者如果您确保用户名始终具有唯一值,则只使用用户名
try {
      //this portion assumes you know how to set up a connection to your database
      //provider
      conn = getConnection();
      String query = "select count(*) from tableName where username = ? and password = ?";
      pstmt = conn.prepareStatement(query);
      pstmt.setString(1, username); //puts the username at the position of the first question mark
      pstmt.setString(2, password); //and the password at the position of the second one.
      rs = pstmt.executeQuery();
      if (rs.next()) {
        int numberOfRows = rs.getInt(1);
        System.out.println("numberOfRows= " + numberOfRows);
        if(numberOfRows == 0)
        {
          System.out.println("No user found for this username and password");
        }
        else
        {
          //you could set a flag here to indicate that you found a username and password
        } 
      } else {
        System.out.println("error: could not get the record counts");
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        rs.close();
        pstmt.close();
        conn.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }