使用Parameters.Add()将文本追加到sql字段

时间:2015-03-10 09:36:34

标签: c# sql asp.net

任何人都可以帮忙。我有一个表有三个字段的字段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());

4 个答案:

答案 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());