仅将已更改的DataSet行添加到Database表中

时间:2012-11-15 07:33:20

标签: c# sql winforms

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

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

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

3 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分:0)

查看方法DataSet.AcceptChanges()。

这是msdn文章的详细信息

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

答案 2 :(得分:0)

有几点需要注意:
1.您可能希望使用ORM:Entity FrameworkNHibernateDapper是一些需要考虑的解决方案。
2.如果您正在使用Gridview或其他一些控件,他们通常可以自动处理这种情况以进行简单的数据绑定 3.您始终可以使用每个主键手动运行查询以检查ID是否存在。如果是,那么运行update,如果没有,则运行insert。