如何将ICollection <string>插入ADO.NET中的一个字段?

时间:2019-02-05 12:31:07

标签: c# ado.net

我的控制器中有ICollection对象。此收藏集是从这样的视图发布的;

null

{string[3]}

[0]=a

[1]=b

[2]=c

我使用我的构建器像a,b,c这样更改此值;

        public ActionResult TarifEkle(Tarifler tarif, ICollection<string> tAdim)
     {
        string mainconn = ConfigurationManager.ConnectionStrings["Tarif"].ConnectionString;
        SqlConnection sqlconn = new SqlConnection(mainconn);
        string sqlquery = "insert into [NePisirsem].[dbo].[Tarifler](tAdim) values (@builder)";
        SqlCommand sqlcomm = new SqlCommand(sqlquery, sqlconn);
        sqlconn.Open();

它成功地使值成为我想要的 var builder = new System.Text.StringBuilder(); foreach (string item in tAdim) { builder.Append(item).Append(","); sqlcomm.Parameters.AddWithValue("@builder", tarif.tAdim); } ,但我不能以这种方式添加此值(a,b,c)
 a,b,c,此代码始终仅使用第一个值sqlcomm.Parameters.AddWithValue("@builder", tarif.tAdim);,而不是全部使用。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要更改以下部分

     var builder = new System.Text.StringBuilder();
        foreach (string item in tAdim)
    {
      builder.Append(item).Append(",");
         sqlcomm.Parameters.AddWithValue("@builder", tarif.tAdim);
    }

    sqlcomm.Parameters.AddWithValue("@builder", string.Join(",", tAdim));
如果需要@buildera,b,c替换为sqlquery,则在您的{{1}中将

a, b, c替换为","。详细了解", " here

请勿使用string.Join()

您可以阅读here,因此,AddWithValue()Parameters.Add()更可取,因为您可以指定将字符串转换为的适当SqlDbType

Parameters.AddWithValue()

使用sqlcomm.Parameters.Add("@builder", SqlDbType.VarChar, 30).Value = string.Join(",", tAdim); SqlDbType.VarChar并将SqlDbType.NVarChar替换为您的实际最大长度。


INSERT INTO语句

here所述,insert语句的格式如下:

30

INSERT INTO table_name (column_list) VALUES (value_list_1), (value_list_2), ... (value_list_n); 是您在column_list上的列的列表,例如[NePisirsem].[dbo].[Tarifler]。然后可以提供多个tAdim,每个value_lists在表中生成一个新行。 value_list必须与column_list

的顺序匹配