C# 如何使用Stringbuilder将多个Listview项插入sqldatabase?

C# 如何使用Stringbuilder将多个Listview项插入sqldatabase?,c#,C#,当我试图一次将多个listview项插入SQL数据库时遇到问题。我想使用StringBuilder来实现这一点。例如,我想附加下面的项目代码和项目名称,并在数据库中只保存一行,即001=面包,002=肉馅饼等 项目代码-001、002、003、004、005 项目名称-面包、肉馅饼、鱼卷、蛋卷、甜甜圈 因此,在我单击“保存”按钮后,所有“项目名称”字符串数据将存储在数据库中的一行中。下面是我的代码 foreach (ListViewItem i in listView1.Items) {

当我试图一次将多个listview项插入SQL数据库时遇到问题。我想使用
StringBuilder
来实现这一点。例如,我想附加下面的项目代码和项目名称,并在数据库中只保存一行,即001=面包,002=肉馅饼等

项目代码-001、002、003、004、005

项目名称-面包、肉馅饼、鱼卷、蛋卷、甜甜圈

因此,在我单击“保存”按钮后,所有“项目名称”字符串数据将存储在数据库中的一行中。下面是我的代码

foreach (ListViewItem i in listView1.Items)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("INSERT INTO Snack (Item code, Itemname)");
    sb.Append(" VALUES (@d1, @d2)");
    SqlCommand cmd = new SqlCommand(sb.ToString(), con);

    {
        cmd.Parameters.AddWithValue("@d1", i.SubItems[0].Text);
        cmd.Parameters.AddWithValue("@d2", i.SubItems[1].Text);           

        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }
 }

必须在循环中创建StringBuilder,然后执行查询。它应该是这样的:

StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO Snack (Item code, Itemname) VALUES");
foreach (ListViewItem i in listView1.Items)
{
     sb.Append($" ({ i.SubItems[0].Text},{i.SubItems[1].Text}),");
}
sb.Remove(sb.Length - 1, 1);
sb.Append(";");
SqlCommand cmd = new SqlCommand(sb.ToString(), con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();

那么…你有什么问题?我不明白到底需要解决什么问题。你是说要用逗号连接所有项目吗?你是指所有的子项还是其他什么?你想把一个逗号分隔的值列表存储到一列中吗?这是一个非常糟糕的数据库设计决策,只会给您带来永远的问题。对于您展示的代码,您不需要StringBuilder。我不可能理解listview的外观,我也不理解“001=Bread”之类的意思。是否要将所有listView1.项保存在一条记录中,还是要按子项[0]分组,然后将具有相同项代码的所有子项[1]写入一条记录?