2015-09-16 209 views
0

这里是我在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 , [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已经有两个项目,我有一个更新按钮。当我点击更新按钮时,我想添加一个新项目,然后添加到数据库中,但是当我得到数据时,新的添加项目和它的两倍,但是旧的项目消失了。

+1

是的,因为您正在覆盖下一次更新的值。 – Rahul

+0

如何解决先生? –

+0

如果您想保留旧值,请使用“插入”而不是“更新”。 – jdweng

回答

0

请尝试以下方法;

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(); 
} 
+0

我尝试这个,但是是旧的项目仍然存在,但它与新的更新项目翻了一番。 –

+1

我已经自己解决了,你给了我一个线索,先生,谢谢! :) –

相关问题