SqlDataAdapter簡單介紹 (轉)


 

一、特點介紹

1、表示用於填充 DataSet 和更新 SQL Server 數據庫的一組數據命令和一個數據庫連接。
2、在SqlDataAdapter和DataSet之間沒有直接連接。當完成SqlDataAdpater.Fill(DataSet)調用后,兩個對象之間就沒有連接了。

 

 
******

        SqlDataAdapter的Fill方法調用前不需要有活動的SqlConnection對象,SqlDataAdapter會自己打開strConn語句中的數據庫,獲取查詢結果后,關閉與數據庫的連接。如果已經存在SqlConnection對象,無論是否已經打開,SqlDataAdapter執行完Fill方法后,均會將SqlConnection對象返回到原始狀態。
        當程序中的多個SqlDataAdapter對象使用都一個SqlConnection對象時,為避免多次打開與關閉SqlConnection對象,應該在調用SqlDataAdapter的Fill方法前調用SqlConnection的Open方法打開數據庫的連接,待完成Fill調用后再調用SqlConnection的Close方法關閉數據庫的連接。

******

 

 

二、使用介紹

 1、創建SqlDataAdapter
...
string strSQL=“Select * from Customers”;
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=cmd;

 

2、SqlDataAdapter構造函數
①string strConn=“Provider=.....”;
string strSQL=“select * from Customers”;
SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
②string strConn=“Provider=.....”;
SqlConnection cn=new SqlConnection(strConn);
SqlDataAdapter da=new SqlDataAdapter(“select * from Customers”,cn);
③string strConn=“Provider=.....”;
string strSQL=“select * from Customers”;
SqlConnection cn=new SqlConnection(strConn);
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataAdapter da=new SqlDataAdapter(cmd);

 

3、從查詢中獲取結果
①使用Fill方法
...
SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
DataSet ds=new DataSet();
da.Fill(ds); //這里ds中的表名為Table
②使用Fill方法創建DataTable對象和DataColumn對象
...
SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);

// 讓ds.Tables[0].TableName為 Customers

da.TableMapping.Add(“Table”,“Customers”);  

DataSet ds=new DataSet();
da.Fill(ds);
③使用重載Fill方法
SqlDataAdapter.Fill(DataSet,“Customers”);
SqlDataAdapter.Fill(DataTable);
SqlDataAdapter.Fill(DataSet,intStartRecord,intNumRecords,“TableName”);
④開放和關閉連接

如 果調用了一個SqlDataAdapter對象的Fill方法,而SelectCommand屬性的Connection關閉了,那么 SqlDataAdapter就會開放一個連接,然后提交查詢、獲取結果、最后關閉連接。如果在調用前開放了Connection,那么操作之后仍然保持 開放。
...
SqlDataAdapter daCustomers,daOrders;
daCustomers=new SqlDataAdapter(“Select * from Customers”,cn);
daOrders=new SqlDataAdapter(“Select * from Orders”,cn);
DataSet ds=new DataSet();
cn.Open();
daCustomers.Fill(ds);
daOrders.Fill(ds);
cn.Close();
⑤多次調用Fill方法
刷新DataSet中的數據,最簡單的解決方法就是清空DataSet(或DataTable),然后再次調用DataAdapter對象的Fill方法。

 

三、屬性方法事件介紹
1、屬性
①AcceptChangeDuringFill:確定由DataAdapter所獲取的行的RowState(默認為True)。
②DeleteCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,以從數據集刪除記錄。
③InsertCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,以在數據源中插入新記錄。
④SelectCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,用於在數據源中選擇記錄。
⑤UpdateCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,用於更新數據源中的記錄。
⑥TableMappings:SqlDataAdapter用來將查詢的結果映射到DataSet的信息集合。
⑦ContinueUpdate:控制SqlDataAdapter在遇到一個錯誤之后是否繼續提交更改(默認為false)。

 

2、方法
①Fill:執行存儲於SelectCommand中的查詢,並將結果存儲在DataTable中。
②FillSchema:為存儲在SelectCommand中存儲的查詢獲取架構信息。獲取查詢中的各列名稱和數據類型。
③GetFillParameters:為SelectCommand獲取一個包含着參數的數組。
④Update:向數據庫提交存儲在DataSet(或DataTable、DataRows)中的更改。該方法會返回一個整數值,其中包含着在數據存儲中成功更新的行數。

 

3、事件
①FillError:當DataAdapter遇到填充DataSet或DataTable的一個錯誤時,該事件被觸發。
②RowUpdated:向數據庫提交一個修改的行之后被觸發。
③RowUpdating:向數據庫提交一個修改的行之前被觸發。 


免責聲明!

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



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