2015-06-14 42 views
0

我已经编写了一个c#foreach函数来更新sql server中的一列。 我有两个值,我想追加在同一列。 在foreach函数中,它更新列中的值,但它会覆盖下一个“循环”的值。在sql server中追加值

例子:

string value = "Blue"; 
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET [email protected] WHERE color_id = 11", connection); 

再下一foreach循环的字符串值是“红色”

string value = "Red"; 
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET [email protected] WHERE color_id = 11", connection); 

我应该怎么写我的代码在SQL列获得两个值。 “蓝,红”提前

回答

0

的毗连你的字符串

感谢,然后再进行更新。

string value = "Blue"; 
value += ", Red"; 
SqlCommand cmdUpdate = new SqlCommand("UPDATE Colors SET [email protected] 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); 
} 
+0

与sql示例非常相称。再次感谢你 ! – crippa

1

您可以创建一个这样的逻辑;

  • 将您的所有字符串在List<string>
  • 生成temperory空字符串您插入条命令。
  • 对于第一个值,请检查您的临时字符串是否为空,如果是,则将其添加到当前字符串,如果不是,则使用当前字符串和旧字符串进行格式化。

作为一个例子;

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 [email protected] 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(); 
} 

这将更新您的colorBlueBlue, Red与秩序。