如何使用Stringbuilder将多个Listview Item插入sqldatabase?
Posted
技术标签:
【中文标题】如何使用Stringbuilder将多个Listview Item插入sqldatabase?【英文标题】:How to use Stringbuilder to insert multiple Listview Item into sqldatabase? 【发布时间】:2020-08-31 12:18:08 【问题描述】:当我尝试一次将多个 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。 我无法理解您的列表视图的外观,而且我不明白“001 = Bread”之类的意思。是要将所有 listView1.Items 保存在一条记录中,还是要按 SubItem[0] 分组,然后将具有相同项目代码的所有 SubItem[1] 写入一条记录? 【参考方案1】:您必须在循环中创建一个 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 Item插入sqldatabase?的主要内容,如果未能解决你的问题,请参考以下文章
为啥使用 StringBuilder? StringBuffer 可以与多个线程以及一个线程一起使用吗?
Java基础 - String/StringBuilder/Buffer StringFor
StringBuffer与StringBuilder有什么区别