public static int updateC(string outtime, string outuserid,string card) { //update H set outtime = '1900-01-01 08:54:29.000', outuserid = 'zq'where card = '9999'; string sql = " update H set outtime = '" + outtime + "', outuserid = '" + outuserid + "' where card='345';"; return DBHelper.executeNonQuery(sql); }
时间: 2024-01-13 11:04:36 浏览: 69
《MY-SQL实用教程》期末考试题.pdf
这段代码存在 SQL 注入的风险,因为 SQL 语句中的参数值是直接拼接而成的,可能会被恶意用户利用来执行恶意代码。建议使用参数化查询来避免 SQL 注入的风险。同时,如果 `outtime` 和 `outuserid` 是日期和用户 ID 类型的字段,应该考虑将它们转化为对应的数据类型。
推荐修改为以下代码:
```
public static int updateC(string outtime, string outuserid, string card)
{
string sql = "UPDATE H SET outtime = @outtime, outuserid = @outuserid WHERE card = @card;";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@outtime", outtime);
cmd.Parameters.AddWithValue("@outuserid", outuserid);
cmd.Parameters.AddWithValue("@card", card);
return DBHelper.executeNonQuery(cmd);
}
```
在上面的代码中,我们使用参数化查询来避免 SQL 注入的风险,将 `outtime`、`outuserid` 和 `card` 作为参数传递给 SQL 语句。同时,我们调用了 `DBHelper.executeNonQuery` 方法来执行 SQL 语句并返回受影响的行数。
阅读全文