使用DataSet物件訪問資料庫
當對DataSet物件進行操作時,DataSet物件會產生副本,所以對DataSet裡的資料進行編輯操作不會直接對資料庫產生影響,而是將DataRow的狀態設定為added、deleted或changed,最終的更新資料來源動作將通過DataAdapter物件的update方法來完成。
DataSet物件的常用方法如下。
- void AcceptChanges():該方法用來提交DataSet裡的資料變化。
- void clear():該方法用來清空DataSet裡的內容。
- DataSet copy():該方法把DataSet的內容複製到其他DataSet中。
- DataSet GetChanges():該方法用來獲得在DataSet裡已經被更改後的資料行,並把這些行填充到Dataset裡返回。
- bool HasChanges():如果DataSet在建立後或執行AcceptChanges後,其中的資料沒有發生變化,返回True,否則返回False。
- void RejectChanges():該方法撤銷DataSet自從建立或呼叫AcceptChanges方法後的所有變化。
DataSet物件一般是和DataAdapter物件配合使用。
下面的程式碼演示瞭如何綜合使用DataSet和DataAdapter物件訪問資料庫。
//省略獲得連線物件的程式碼 …… //建立DataAdapter string sql= " select * from user "; SqlDataAdapter sda=new SqlDataAdapter(sql, conn); // 建立並填充Dataset DataSet ds=new DataSet(); sda.fill(ds, "user"); //給Dataset建立一個副本,操作對副本進行,以免因誤操作而破壞資料 DataSet dsCopy=ds.Copy(); DataTable dt=ds.Table["user"]; //對DataTable中的DataRow和DataColumn物件進行操作 …… //最後將更新提交到資料庫中 sda.update(ds, "user");
上述程式碼的主要業務流程如下。
(1)建立DataAdapter和DataSet物件,並用DataAdapter的SQL語句生成的表填充到 DataSet的DataTable中。
(2)使用DataTable對錶進行操作,例如做增、刪、改等動作。
(3)使用DataAdapter的update語句將更新後的資料提交到資料庫中。
另外,上述程式碼在操作DataSet前,為DataSet建立了一個副本,用宋避免誤操作。