C#里sqlDataAdapter.fill(DataSet,String)的用法


第二個參數 String是指定DataSet 里表的名字,例如 sqlDataAdapter.fill(DataSet,"學生表") 
指定后,以后就可以這樣調用這張表 DataSet.Tables["學生表"]
第二個參數可以不要的,如果不要第二個參數 String 那你調用這張表只能通過索引號,例如 DataSet.Tables[0] 如果填充的表比較多的話,用這個參數比較容易管理和
調用。
-----------------------------------------------------------------------------------
使用DataAdapter填充DataSet(1)

在選擇了DataAdapter的類型(SqlDataAdapter或OleDbDataAdapter)並配置了DataAdapter來執行所需的任務之后,可以用創建的DataAdapter來填充DataSet。

1.使用DataAdapter填充DataSet

可以使用DataAdapter來填充DataSet。調用DataAdapter的Fill方法,並指定要填充的DataSet表。Fill方法隱式執行DataAdapter的SelectCommand中的SQL查詢,查詢的結果用於定義DataSet表的結構,並用數據來填充表。此外,Fill方法是可重載的。例如:

rowsAffected = aDataAdapter.Fill(DataSet);  
rowsAffected = aDataAdapter.Fill(DataSet,strDataTableName);  
rowsAffected = aDataAdapter Fil](DataTable); 

當填充DataSet時,DataAdapter會強制一些約束,例如主鍵唯一性。為了提高性能,在填充DataSet前將EnforceConstraints屬性設置為false,這將在數據加載過程中禁用約束檢查。

aDataset.EnforceConstraints=false;  

【實例10-5】  使用Datadapter填充DataSet。

下面創建一個DataSet,它包含一個名為Department的表。使用名為daDepartment的DataAdapter來填充該表,並調用BeginLoadData方法來優化性能。

填充完該表之后,將一個DataGridView控件綁定到該表,該DataGridView將在屏幕上顯示客戶信息。

SqlDataAdapter daDept = new SqlDataAdapter(  
"select * from humanresources.department", cn);  
DataSet dsDept = new DataSet();  
dsDept.Tables.Add(new DataTable("Department"));  
dsDept.Tables[0].BeginLoadData();  
daDept.Fill(dsDept,"Department");  
dsDept.Tables[0].EndLoadData();  
dataGridView1.DataSource = dsDept.Tables["Department"]; 

DataAdapter和Command在如何處理Connection對象上有一個主要的區別:在調用一個Command對象的執行方法前,將打開與該Command相關聯的Connection對象,否則Command會拋出一個異常;DataAdapter則沒有這樣的需求。

如果要調用DataAdapter對象的Fill方法,並且SelectCommand屬性的Connection已經關閉,DataAdapter將自動打開連接、提交查詢、提取結果,然后關閉Connection。讀者也許會發現DataAdapter非常有條不紊,它總是將SelectCommand屬性的Connection恢復到其初始狀態。但是如果在調用Fill方法之前已經打開Connection,調用以后Connection仍然處於打開狀態。因此使用DataAdapter的Fill方法時,不需要手工打開Connection。

但在一些特殊情況下,也需要在執行DataAdapter的Fill方法之前先打開Connection。例如,在應用程序啟動時,用多個DataAdapter對象將多個查詢的結果填充到DaraSet中。可以使用DataAdapter對象的構造函數強制每個DataAdapter都使用相同的Connection對象。代碼如下:

string strConn = "Provider=SQLOLEDB;Data Souroe=(local)"+  
            "Initial catalog=Northwind;Trusted_connection=Yes;";  
OleDbConnection cn = new OleObconnection(strconn);  
OleDbOataAdapter daCustomers,daOrders;  
daCustomers = new OleDbDataAdapter("SELECT ... FROM Customers",cn);  
daOrders = new OleDbDataAdapter("SELECT ... FROM orders",cn);  
ds=new DataSet();  
daCustomers Fill(ds):  
daOrders.Fill(ds); 

實際上,當兩次打開和關閉Connection時,每次都調用DataAdapter對象的Fill方法。為了避免重復地多次打開和關閉Connection對象,在對DataAdapter對象調用Fill方法之前,先調用Connection對象的Open方法。如果要在填充數據以后關閉Connection,則應該像下面例子中顯示的那樣調用Close方法。

cn.Open();  
daCusomers.Fill(ds);  
daOrders.Fill(ds);  
cn.Close(); 

2.高效地填充DataSet

填充DataSet最有效的方法是在填充DataSet前先定義顯示架構,這意味着在填充DataSet前已經知道了DataTable、DataColumn和DataRelation。

斷開式應用程序從數據庫服務器中檢索數據,由於事先知道數據的結構,因此可以創建類型化DataSet,其架構與所檢索的數據結構相同,這使得數據在運行時可以被高效地加載。

在窗體設計器中創建類型化DataSet的步驟如下:

(1)將SqlDataAdapter控件或OleDbDataAdapter控件從工具箱拖放到窗體上。

(2)使用"數據適配器配置向導"按要求配置DataAdapter。

(3)右擊新的DataAdapter對象,在彈出的快捷菜單中選擇"生成數據集"命令。

(4)在彈出的"生成數據集"對話框中為新的DataSet類命名。

(5)選擇要添加到DataSet中的表。

(6)選中"將此數據集添加到設計器"復選框。

(7)單擊"確定"按鈕,將創建一個從DataSet繼承的類型化DataSet類,還將創建這個類的一個實例並將它添加到應用程序中。

(8)右擊新的DataSet對象,在彈出的快捷菜單中選擇"查看架構"命令。

(9)在XML設計器中檢查DataSet的XSD架構。如果需要,可以通過將XSD架構元素從工具箱拖放到XML設計器上來修改和擴展XSD架構。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM