天天看點

SqlDataAdapter簡單介紹 (轉)

From:  http://blog.sobnb.com/u/92/5532.html

一、特點介紹

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:向資料庫送出一個修改的行之前被觸發。

轉載于:https://www.cnblogs.com/nliao/archive/2012/11/18/2775848.html