簡體   English   中英

僅將數據集的更改行添加到數據庫表

[英]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: 實體框架NHibernateDapper是要考慮的一些解決方案。
2.如果您使用的是Gridview或其他控件,它們通常可以為簡單的數據綁定自動處理這種情況。
3.您始終可以使用每個主鍵手動運行查詢以檢查ID是否存在。 如果是,則運行update,如果不是,則運行insert。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM