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

C# 仅将数据集的更改行添加到数据库表中,c#,sql,winforms,C#,Sql,Winforms,在我的项目中,我想使用C#更新数据库表。数据库表的数据也在DataSet中。在这里,每当我更改数据集行值,然后单击按钮时,数据库表应该得到更新 目前,我正在删除所有数据库表(删除查询),然后再次向其中添加数据集数据(插入查询)。真是太可怕了。(我后来意识到) 如何将数据集中已更改的行添加到数据库表中?我不知道从哪里开始。我试着给查询“Insert”,这会使数据库表中的数据翻倍。或者有其他的方法吗?请帮忙 你的意思是这样的吗 protected void Page_Load(object send

在我的项目中,我想使用C#更新数据库表。数据库表的数据也在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);
 }


您可以用修改后的行填充数据表,查看方法DataSet.AcceptChanges()

下面是msdn文章的详细内容


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

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