新鮮嘗試ADO.NET 2.0新功能
ADO.NET 2.0 經過長時間的發展,很多用戶都很了解ADO.NET 2.0 了,這里我發表一下個人理解,和大家討論討論。ADO.NET 2.0 除了增強舊功能外,也提供了相當多的新功能,包含了以基礎類為本(base-class-based)的數據源提供程序(provider)模型、異步訪問架構、批處理更新與大量數據復制(bulk copy)、SQL Server 2005 的回調通知、單一連接同時多執行結果集(MARS)、執行統計、強化的 DataSet 類等等。
#T#換句話說,若要有效發揮 SQL Server 2005 的功能,前端應用程序***用 ADO.NET 2.0 來開發。ADO.NET 2.0 提供了相當多的新增功能,一些與數據源提供程序無關,也就是訪問各種數據庫都可以用到的功能,但有很大的一部分是專屬于 SQL Server 2005,針對 SQL Server 2005 的新功能提供給前端應用程序開發使用。使用多數據結果集(僅限2005),在之前版本的 SQL Server 同一時間一條連接只能傳遞一個 SELECT 語法執行后返回的結果集。如果想在一次連接后返回多個查詢內容只能使用類似如下的方法來實現:
- SqlDataAdapter myDataAdapter = new SqlDataAdapter("StoredProcedureName",myConnection);
- myDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
- myDataAdapter.SelectCommand.Parameters.Add("@sqlstr",sqlstr);
- DataSet ds = new DataSet();
- myDataAdapter.Fill(ds);
- return ds;
- ds.Tables[0],ds.Tables[1],ds.Tables[2]
分別對應三個結果集,SQL Server 2005提供了在同一條連接上可以同時傳遞多個沒有游標結構(cursorless)的結果集(也稱為默認結果集),此功能稱為 Multiple Active Resultsets(MARS)。如此可以節省需要同時打開的連接數,但要注意的是連接字符串設置要加上 MultipleAct-iveResultSets=true 屬性,否則默認不啟動多數據結果集的功能。
- string connstr = "server=(local);database=northwind;integrated security=true; ";
- SqlConnection conn = new SqlConnection(connstr);
- conn.Open();
- SqlCommand cmd1 = new SqlCommand("select * from customers", conn);
- SqlCommand cmd2 = new SqlCommand("select * from orders", conn);
- SqlDataReader rdr1 = cmd1.ExecuteReader();
- // next statement causes an error prior to SQL Server 2005
- SqlDataReader rdr2 = cmd2.ExecuteReader();
- // now you can reader from rdr1 and rdr2 at the same time.