【问题标题】:add only changed rows of the DataSet to the Database table仅将数据集的更改行添加到数据库表
【发布时间】:2012-11-15 07:33:19
【问题描述】:

在我的项目中,我想使用 C# 更新数据库表。 Database表的数据也在DataSet中。每当我更改 DataSet 行值然后单击按钮时,数据库表都应该更新。

目前,我正在删除所有数据库表(DELETE 查询),然后再次向其中添加 DataSet 数据(INSERT 查询)。这真是太可怕了。 (后来才意识到)

如何将DataSet的行添加到已更改的Database表中?我不知道从哪里开始。我尝试给出查询“插入”,它使数据库表中的数据加倍。或者还有其他方法吗?请帮忙。

【问题讨论】:

    标签: c# sql winforms


    【解决方案1】:

    你的意思是这样的吗?

    protected void Page_Load(object sender, EventArgs e)
     {
      DataTable dtDocOperations = new DataTable();
      dtDocOperations.Columns.Add("ButtonRole");
      dtDocOperations.Columns.Add("OperattionCode");
      dtDocOperations.Rows.Add(new Object[] { "MR", "V" });
      dtDocOperations.Rows.Add(new Object[] { "MR", "A" });
      dtDocOperations.Rows.Add(new Object[] { "MR", "R" });
      Session["DocOperattions"] = dtDocOperations;
      dtDocOperations.AcceptChanges(); // once AcceptChanges called then you can get the modified rows
    
      dtDocOperations.Rows[0]["ButtonRole"] = "mr1";
      DataTable dt = dtDocOperations.GetChanges(DataRowState.Modified);
     }
    

    dtDocOperations.AcceptChanges();
    

     DataTable dt = dtDocOperations.GetChanges(DataRowState.Modified);
    

    您可以使用修改后的行填充数据表

    【讨论】:

      【解决方案2】:

      查看方法 DataSet.AcceptChanges()。

      这里是msdn文章的详细介绍

      http://msdn.microsoft.com/en-us/library/system.data.dataset.acceptchanges.aspx

      【讨论】:

        【解决方案3】:

        注意几点:
        1. 您可能想使用 ORM:Entity FrameworkNHibernateDapper 是一些需要考虑的解决方案。
        2. 如果您使用 Gridview 或其他一些控件,它们通常可以自动处理这种情况以进行简单的数据绑定。
        3.您可以随时手动对每个主键运行查询以检查ID是否存在。如果是则运行更新,如果不是,则运行插入。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-08
          • 1970-01-01
          • 2019-07-27
          • 2011-05-11
          • 1970-01-01
          • 1970-01-01
          • 2011-06-02
          • 1970-01-01
          相关资源
          最近更新 更多