C# OleDbCommand cmd = new OleDbCommand(userAnswerQuery,con); var result = cmd.ExecuteQuery(); 报错
时间: 2024-09-23 15:02:17 浏览: 38
在C#中,`OleDbCommand` 类用于执行 SQL 查询。然而,如果直接使用用户输入构造查询字符串(如示例所示),可能会导致 SQL 注入攻击[^1],因为用户的输入未经验证就被直接插入到 SQL 语句中。
正确的做法应该是使用参数化查询,以防止SQL注入。下面是一个安全的示例:
```csharp
string userAnswerQuery = "SELECT * FROM users WHERE username = @username AND password = @password";
using (OleDbConnection con = new OleDbConnection(connectionString))
{
// 创建命令对象并设置参数
OleDbCommand cmd = new OleDbCommand(userAnswerQuery, con);
cmd.Parameters.AddWithValue("@username", userInputUsername);
cmd.Parameters.AddWithValue("@password", userInputPassword);
// 打开连接并执行查询
con.Open();
var result = cmd.ExecuteReader();
if (result.HasRows)
{
// 处理结果
}
}
```
这里使用 `AddWithValue` 方法添加参数,这样即使用户输入包含特殊字符,数据库也会正确解析,不会被当作SQL语法的一部分来执行。
阅读全文