在sql server中追加值
问题描述:
我已经编写了一个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列获得两个值。 “蓝,红”提前
答
的毗连你的字符串
感谢,然后再进行更新。
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);
}
答
您可以创建一个这样的逻辑;
- 将您的所有字符串在
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();
}
这将更新您的color
为Blue
和Blue, Red
与秩序。
与sql示例非常相称。再次感谢你 ! – crippa