我编写了一个c#foreach函数来更新sql server中的列。 我有2个值,我想在同一列中追加。 在foreach函数中,它更新列中的值,但它会覆盖下一个“循环”的值。
示例:
string value = "Blue";
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET color=@value WHERE color_id = 11", connection);
然后下一个foreach循环,字符串值为“Red”
string value = "Red";
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET color=@value WHERE color_id = 11", connection);
我应该如何编写代码以在sql列中获取这两个值。 “蓝色,红色”
提前致谢
答案 0 :(得分:1)
你可以创建这样的逻辑;
List<string>
作为一个例子;
var list = new List<string>(){"Blue", "Red"};
var tempStr = "";
foreach(var s in list)
{
if(tempStr == "")
tempStr = s;
else
tempStr = string.Format("{0}, {1}", tempStr, s);
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET color=@value WHERE color_id = 11", connection);
cmdUpdate.Parameters.Add("@value", SqlDbType.NVarChar).Value = tempStr;
// I assume your color column is NVarChar.
cmdUpdate.ExecuteNonQuery();
cmdUpdate.Parameters.Clear();
}
这会将您的color
Blue
和Blue, Red
更新为订单。
答案 1 :(得分:0)
先绑定你的字符串然后更新。
string value = "Blue";
value += ", Red";
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET color=@value WHERE color_id = 11", connection);
当然,在你的foreach条款中这样做。
编辑:如果您只想使用sql:
,也可以这样做SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET color='' WHERE color_id = 11", connection);
foreach(...)
{
value = "[Your Value]";
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET color= color + ', ' + @value WHERE color_id = 11", connection);
}