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