[英]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: 實體框架 , NHibernate , Dapper是要考慮的一些解決方案。
2.如果您使用的是Gridview或其他控件,它們通常可以為簡單的數據綁定自動處理這種情況。
3.您始終可以使用每個主鍵手動運行查詢以檢查ID是否存在。 如果是,則運行update,如果不是,則運行insert。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.