在sql server中追加值

时间:2015-06-14 13:57:17

标签: c# sql-server

我编写了一个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列中获取这两个值。 “蓝色,红色”

提前致谢

2 个答案:

答案 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 BlueBlue, 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);
}