0

我有 2 列名称和价格。假设数据库表中已经有一些数据将显示在 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();

编辑:上面的代码会将d​​atagridview中的每个数据添加到数据库中并继续复制。

感谢您的关注。

4

2 回答 2

1

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

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

于 2012-08-10T06:45:59.120 回答
0

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

在数据网格中插入行并单击保存后,使用主数据检查新数据。

于 2012-08-10T06:25:27.617 回答