Servlets 如何在插入servlet之前检查用户名和密码
我想在将详细信息插入表之前检查用户名和密码。如果用户名和密码与另一个表中的用户名和密码匹配,则只允许插入详细信息。如何操作?请提供代码 我正在使用NetBeans 7.0.1和mysql数据库 我的代码是:-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(
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();
}
}