任何人都可以帮忙。我有一个表有三个字段的字段Amount,LatestUpdate和Note,我想使用参数更新这三个字段以避免任何sql注入。我需要帮助,使用parameter.Add()以正确的方式编写它们。 这是代码。
com.CommandText = "update tblStore set Amount=Amount + @amount, LatestUpdate=@latestUpdate, Notes = convert(nvarchar(4000),@notes) + '. " + item.notes + "' WHERE ID=1";
com.Parameters.Add("@amount", item.amount.ToString());
com.Parameters.Add("@latestUpdate", item.fuelingDate.ToString());
com.Parameters.Add("@notes", item.notes.ToString());
答案 0 :(得分:0)
您需要添加参数以及SqlDBType。不要使用AddWithValue方法,因为有几篇文章提到它不是很安全。我会使用以下内容:
com.CommandText = "update tblStore set Amount=Amount + @amount, LatestUpdate=@latestUpdate, Notes = @notes WHERE ID=1";
SqlParameter parameter = new SqlParameter("@amount", System.Data.SqlDbType.Int);
parameter.Value = item.amount;
com.Parameters.Add(parameter);
parameter = new SqlParameter("@latestUpdate", System.Data.SqlDbType.DateTime);
parameter.Value = item.fuelingDate;
com.Parameters.Add(parameter);
parameter = new SqlParameter("@notes", System.Data.SqlDbType.NVarChar);
parameter.Value = item.notes;
com.Parameters.Add(parameter);
- UPDATE -
要更新笔记而不是覆盖,只需更改commandText:
com.CommandText = "update tblStore set Amount=Amount + @amount, LatestUpdate=@latestUpdate, Notes = Notes + @notes WHERE ID=1";
答案 1 :(得分:0)
你快到了..你想要像
这样的东西com.Parameters.Add("@amount", SqlDbType.Int).Value = item.amount;;
com.Parameters.Add("@latestUpdate", SqlDbType.DateTime).Value = item.fuelingDate;;
com.Parameters.Add("@notes", SqlDbType.NVarChar).Value = item.notes;
不要忘记包含using System.Data;
答案 2 :(得分:0)
这是最终的代码,我会分享它以防其他人需要它。谢谢大家的帮助。
com.CommandText = "update tblStore set Amount=Amount + @amount, LatestUpdate=@latestUpdate, Notes = convert(nvarchar(4000),Notes) + '.' + @notes WHERE ID=1";
com.Parameters.Add("@amount", SqlDbType.Int).Value = item.amount; ;
com.Parameters.Add("@latestUpdate", SqlDbType.DateTime).Value = item.fuelingDate; ;
com.Parameters.Add("@notes", SqlDbType.NVarChar).Value = item.notes;
答案 3 :(得分:-1)
com.CommandText = "update tblStore set Amount=Amount + @amount,
LatestUpdate=@latestUpdate, Notes = convert(nvarchar(4000),@notes) + '. " +
item.notes + "' WHERE ID=1";
com.Parameters.AddWithValue("@amount", item.amount.ToString());
com.Parameters.AddWithValue("@latestUpdate", item.fuelingDate.ToString());
com.Parameters.AddWithValue("@notes", item.notes.ToString());