使用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創建了一個副本,用宋避免誤操作。