繁体   English   中英

仅将数据集的更改行添加到数据库表

[英]add only changed rows of the DataSet to the Database table

在我的项目中,我想使用C#更新数据库表。 数据库表的数据也位于数据集中。 在这里,每当我更改DataSet行值,然后单击一个按钮时,数据库表就应该更新。

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

如何将已更改的DataSet行添加到数据库表? 我不知道从哪里开始。 我尝试提供查询“ Insert”,这使数据库表中的数据加倍。 否则还有其他替代方法吗? 请帮忙。

你的意思是这样吗?

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);

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

看一下DataSet.AcceptChanges()方法。

这是msdn文章的详细信息

http://msdn.microsoft.com/zh-CN/library/system.data.dataset.acceptchanges.aspx

需要注意的几件事:
1.您可能想使用ORM: 实体框架NHibernateDapper是要考虑的一些解决方案。
2.如果您使用的是Gridview或其他控件,它们通常可以为简单的数据绑定自动处理这种情况。
3.您始终可以使用每个主键手动运行查询以检查ID是否存在。 如果是,则运行update,如果不是,则运行insert。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM