2012-08-10 87 views
0

我有2列是名称和价格。 假设数据库表中已经有一些数据将显示在datagridview中。 现在,当用户输入新的数据行时(无论有多少行),并且他们点击保存按钮,所有新行数据将被保存到数据库中。c#sql datagridview如何只插入新的数据行到数据库

问题是, 我该如何捕获新的数据行?或者如何检查名称是否存在,检查价格是否相同,然后不插入,如果价格不同,则更新价格。

这里是我的代码:

con = new System.Data.SqlClient.SqlConnection(); 
     con.ConnectionString = "Data Source=tcp:SHEN-PC,49172\\SQLEXPRESS;Initial Catalog=LSEStock;Integrated Security=True"; 
     con.Open(); 
     SqlDataAdapter da = new SqlDataAdapter(); 

     for (int i = 0; i<dataGridView1.Rows.Count; i++) 
     { 

      String insertData = "INSERT INTO CostList(SupplierName, CostPrice, PartsID) VALUES (@SupplierName, @CostPrice, @PartsID)" ; 
      SqlCommand cmd = new SqlCommand(insertData, con); 
      cmd.Parameters.AddWithValue("@SupplierName", dataGridView1.Rows[i].Cells[0].Value); 
      cmd.Parameters.AddWithValue("@CostPrice", dataGridView1.Rows[i].Cells[1].Value); 
      cmd.Parameters.AddWithValue("@PartsID", textBox1.Text); 
      da.InsertCommand = cmd; 
      cmd.ExecuteNonQuery(); 
     } 

     con.Close(); 

编辑:上面的代码将在DataGridView添加的每个数据到数据库,并不断重复。

感谢您的关注。

回答

1

一种方法是删除sql表中的所有数据,然后在网格视图中插入所有数据。

解决此问题的另一种方法是在网格视图中创建一个名称为tempid的列,并为要插入的所有新行分配值-1,并在保存时单击仅获取带有tempid = -1的行并插入它们进入sql表格。

+0

你能否提供一些示例代码供我参考?或一些链接,谢谢 – 2012-08-11 00:53:45

+0

试试这个http://technico.qnownow.com/how-to-insert-update-delete-rows-in-asp-net-gridview-control/ – 2012-08-13 09:09:07

0

将您的数据加载到数据集和数据表中。 和另一个数据表(主数据)对象。

在datagrid中插入行并保存点击后,用主数据检查你的新数据。

相关问题