Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ListView中添加新项,然后更新到数据库_C#_Listview - Fatal编程技术网

C# 在ListView中添加新项,然后更新到数据库

C# 在ListView中添加新项,然后更新到数据库,c#,listview,C#,Listview,下面是我在ListView中添加项然后添加到数据库的代码 for (int i = 0; i <= ListView1.Items.Count - 1; i++) { string cd = "Update ProductSold set [BillNo] = '" + txtBillNoE.Text + "',[DishName] = @d2, [DishRate] = @d3 , [Quantity] = @d4 , [Tot

下面是我在ListView中添加项然后添加到数据库的代码

  for (int i = 0; i <= ListView1.Items.Count - 1; i++)
            {
                string cd = "Update ProductSold set [BillNo] = '" + txtBillNoE.Text + "',[DishName] = @d2, [DishRate] = @d3 , [Quantity] = @d4 , [TotalAmount] = @d5 where BillNo = " + txtBillNoE.Text + "";
                cmd = new OleDbCommand(cd);
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("d2", ListView1.Items[i].SubItems[1].Text);
                cmd.Parameters.AddWithValue("d3", ListView1.Items[i].SubItems[2].Text);
                cmd.Parameters.AddWithValue("d4", ListView1.Items[i].SubItems[3].Text);
                cmd.Parameters.AddWithValue("d5", ListView1.Items[i].SubItems[4].Text);
                cmd.ExecuteNonQuery();
            }
我将在我的程序中为您提供一个场景,以明确问题,我的ListView中已经有两个项目,并且我有一个更新按钮。当我点击更新按钮时,我想添加一个新项目,然后添加到数据库中,但当我获得数据时,新的添加项目和它的两倍,但两个旧项目消失了

尝试以下方法

for (int i = 0; i <= ListView1.Items.Count - 1; i++)
{
    string cd = @"INSERT INTO ProductSold (BillNo, DishName, DishRate, Quantity, TotalAmount)
                  VALUES (@BillNo, @DishName, @DishRate, @Quantity, @TotalAmount)";

    cmd = new OleDbCommand(cd);
    cmd.Connection = con;
    cmd.Parameters.AddWithValue("@BillNo", txtBillNoE.Text);
    cmd.Parameters.AddWithValue("@DishName", ListView1.Items[i].SubItems[1].Text);
    cmd.Parameters.AddWithValue("@DishRate", ListView1.Items[i].SubItems[2].Text);
    cmd.Parameters.AddWithValue("@Quantity", ListView1.Items[i].SubItems[3].Text);
    cmd.Parameters.AddWithValue("@TotalAmount", ListView1.Items[i].SubItems[4].Text);
    cmd.ExecuteNonQuery();
}

是的,因为下一次更新将覆盖这些值。如何解决此问题,先生?如果要保留旧值,请使用Insert而不是update。如何解决?上面的代码是用于插入的代码。@JohnKennethdeLara没有用于更新的代码。.我尝试了这个,但是是的,旧的项目保留了,但是新的更新项目增加了一倍。我已经自己解决了。您给了我一个线索,先生,谢谢!: