在我的项目中,我想使用C#更新数据库表。 Database表的数据也在DataSet中。每当我更改DataSet行值然后单击按钮时,数据库表都应该更新。
目前,我正在删除所有数据库表(DELETE查询),然后再次向其添加DataSet数据(INSERT查询)。这太可怕了。 (我后来意识到了这一点)
如何将DataSet行添加到已更改的Database表中?我不知道从哪里开始。我尝试提供查询“插入”,这是数据库表中的数据加倍。或者有其他方法吗?请帮忙。
答案 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 Framework,NHibernate,Dapper是一些需要考虑的解决方案。
2.如果您正在使用Gridview或其他一些控件,他们通常可以自动处理这种情况以进行简单的数据绑定
3.您始终可以使用每个主键手动运行查询以检查ID是否存在。如果是,那么运行update,如果没有,则运行insert。