string sqlDelete = "DELETE FROM Caigou WHERE 日期 = " + smm + " AND 事件 = " + thing; 执行删除
时间: 2024-12-17 09:24:52 浏览: 2
2022年华东理工大学编译原理词法分析+语法分析实验报告
在给定的代码片段中,你试图通过将日期 (`smm`) 和事件 (`thing`) 直接插入到SQL删除语句中执行对`Caigou`表的删除操作。然而,这种方式存在两个潜在问题:
1. **SQL注入风险**:直接拼接用户输入到SQL查询中容易导致SQL注入漏洞。为了防止这种攻击,应使用参数化查询。
```csharp
string sqlDelete = "DELETE FROM Caigou WHERE 日期 = @date AND 事件 = @event";
MySqlCommand command = new MySqlCommand(sqlDelete, mySqlConnection);
command.Parameters.AddWithValue("@date", smm);
command.Parameters.AddWithValue("@event", thing);
```
这里我们使用`AddWithValue`方法将参数值绑定到占位符上。
2. **数据类型不匹配**:你需要确保`smm`和`thing`的数据类型与数据库列匹配。如果不是有效的日期类型,`+`操作可能会失败。
在修复这些问题并确保所有参数都有正确的值后,你可以通过`ExecuteNonQuery()`方法执行删除操作:
```csharp
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected > 0)
{
Console.WriteLine("删除成功,影响了" + rowsAffected + "条记录");
}
else
{
Console.WriteLine("没有找到符合条件的记录,未执行删除");
}
```
这会返回受影响的行数,如果没有执行删除,因为找不到匹配的记录,`ExecuteNonQuery()`将返回0。
阅读全文