我有两列名称和价格。 假设数据库表中已经有一些数据将显示在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中的每个数据添加到数据库中并继续复制。
感谢您的关注。
答案 0 :(得分:1)
一种方法是删除sql表中的所有数据,然后在网格视图中插入您拥有的数据。
解决此问题的另一种方法是在网格视图中创建一个名为tempid的列,并为要插入的所有新行分配值-1,在保存时单击仅使用tempid = -1获取行并将其插入到sql表。
答案 1 :(得分:0)
将数据加载到数据集和数据表中。 和另一个数据表(主数据)对象。
在数据网格中插入行并单击保存后,使用主数据检查新数据。