《.NET分布式應用程式開》讀書筆記 第三章:中斷連線式的資料

來源:互聯網
上載者:User
文章目錄
  • ADO.NET的架構
  • 串連提供者類
  • DataSet
  • DataAdapter

在這一章,我們主要介紹.NET中的資料訪問技術:ADO.NET.

ADO.NET的架構

可以看到,ADO.NET中的類分為兩種:

  • 1.串連提供者類(Connection,Command,DataReader等)
  • 2.資料類(DataSet,DataTable,DataView等)
  • 這兩種分類和我在前一章中介紹的組件分類是一致的.

 

 

串連提供者類

 

不同的資料庫,使用不同的Provider來訪問資料庫..NET架構公開了一組公用的介面,可以讓資料庫廠商實現自己的Provider.內建的資料Provider有:

1.System.Data.SqlClient(訪問Sql Server)

2.System.Data.OracleClient(訪問Oracle,不過Oracle自己提供了更好的Privider,叫ODP.NET,建議直接用這個)

3.System.Data.OleDb(用OleDb協議訪問資料庫)

4.System.Data.Odbc(用Odbc協議訪問資料庫)

在.NET1.1中,使用原廠模式現實這種Provider模型.如:System.Data.Sqlclient.SqlConnection現實了System.Data.IDbConnection.

在.NET2.0中,使用了抽象工廠現實這種Provider模型.如:System.Data.Sqlclient.SqlConnection繼承於System.Data.Common.DbConnection,而System.Data.Common.DbConnection實現了System.Data.IDbConnection.

通過使用工廠,我們很容易編寫通用的資料存取碼,而不用考慮後面的資料庫.如下面的樣本中,你可以將System.Data.SqlClient存在設定檔中,在運行時讀取:

var factory = System.Data.Common.DbProviderFactories.GetFactory("System.Data.SqlClient");                   

var conn = factory.CreateConnection();
var cmd = factory.CreateCommand();
var cmbBuilder  = factory.CreateCommandBuilder();
var adp= factory.CreateDataAdapter();
var parm = factory.CreateParameter();

…

要知道自己機器上註冊了哪些Provider,可以調用這個訪法:

DataTable registeredProviders = System.Data.Common.DbProviderFactories.GetFactoryClasses();

DataSet

 

簡單來說,DataSet就是記憶體中的資料庫.它支援繼開式的資料訪問和更新.基於Xml儲存資料,很容易地序列化/還原序列化Xml資料.DataSet這種大粒度的資料訪問,很適合在分布式系統中使用.另一個優點是它是基於"集合式"的資料結構,極大地簡化了用戶端程式的編寫.

 

注意,DataSet(還有DataTable,DataColumn)有一個ExtendedProperties屬性,它本質是一個字典一樣的東西.你可以儲存一些自訂的屬性,如DataSet的產生日期,到期日期等.

如:

ds.ExtendedProperties.Add("Expiredate", DateTime.Now.AddHours(8));
ds.ExtendedProperties.Add("Author", "Rock Niu");

DataAdapter

 

DataSet中的資料怎麼從DB拉下來,怎麼更新回DB,都得靠DataAdapter(資料配接器),是DataAdapter的結構圖:

在構造DataAdapter時,通常我們要指定SelectCommand,它用來在DataAdapter.Fill(DataSet)時查詢資料.

Update, Insert, Delete這幾個Command只在調用DataAdapter.Update(DataSet)時才會用到,它們可以由CommanBuilder幫我們自動產生.不過它動態產生時,會訪問表的中繼資料,且Command中會把所有列放在where條件中,這會影響效能.建議大家自己指定Update, Insert, Delete這幾個Command的Text,最好用預存程序,這樣效能最好.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.