在我的项目中,我想使用 C# 更新数据库表。Database表的数据也在DataSet中。每当我更改 DataSet 行值然后单击按钮时,数据库表都应该更新。
目前,我正在删除所有数据库表(DELETE 查询),然后再次向其中添加 DataSet 数据(INSERT 查询)。这真是太可怕了。(我后来意识到这一点)
如何将 DataSet 的行添加到已更改的数据库表中?我不知道从哪里开始。我尝试给出查询“插入”,它使数据库表中的数据加倍。或者还有其他方法吗?请帮忙。
你的意思是这样的吗?
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/en-us/library/system.data.dataset.acceptchanges.aspx
需要注意的几点:
1. 您可能希望使用 ORM: Entity Framework、NHibernate、Dapper是一些需要考虑的解决方案。
2. 如果您使用 Gridview 或其他一些控件,它们通常可以自动处理这种情况以进行简单的数据绑定。
3.您可以随时手动对每个主键运行查询以检查ID是否存在。如果是则运行更新,如果不是,则运行插入。