【问题标题】:c# sql datagridview how to insert only the new rows of data into databasec# sql datagridview 如何只将新的数据行插入数据库
【发布时间】:2012-08-10 06:18:26
【问题描述】:

我有 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中的每个数据添加到数据库中并继续复制。

感谢您的关注。

【问题讨论】:

    标签: c# sql database datagridview save


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多