具體剖析ADO.NET體系結(jié)構(gòu)
對(duì)于ADO.NET體系結(jié)構(gòu)的學(xué)習(xí),首先碰到的就是環(huán)境的配置。以前學(xué)的Visual Studio2003,但并沒有怎么用。所以有一個(gè)星期的時(shí)間基本是在用實(shí)踐著.net 1.0,大大影響了工作效率。
連接模式(Connected Mode)和非連接模式(Disconnected Mode)。運(yùn)用過ADO.NET體系結(jié)構(gòu)的開發(fā)人員對(duì)前一種模式應(yīng)該是非常熟悉的,而后一種模式則是ADO.NET才具有的。相比于傳統(tǒng)的數(shù)據(jù)庫訪問模式,非連接的模式為應(yīng)用程序提供了更大的可升級(jí)性和靈活性。在該模式下,一旦應(yīng)用程序從數(shù)據(jù)源中獲得所需的數(shù)據(jù),它就斷開與原數(shù)據(jù)源的連接,并將獲得的數(shù)據(jù)以XML的形式存放在主存中。在應(yīng)用程序處理完數(shù)據(jù)后,它再取得與原數(shù)據(jù)源的連接并完成數(shù)據(jù)的更新工作。
ADO.NET中的DataSet類是非連接模式的核心,數(shù)據(jù)集對(duì)象(DataSet)是以XML的形式存放數(shù)據(jù)。ADO.NET體系結(jié)構(gòu)應(yīng)用程序既可以從一個(gè)數(shù)據(jù)庫中獲取一個(gè)數(shù)據(jù)集對(duì)象,也可以從一個(gè)XML數(shù)據(jù)流中獲取一個(gè)數(shù)據(jù)集對(duì)象。而從用戶的角度來看,數(shù)據(jù)源在哪里并不重要,也是無需關(guān)心的。這樣一個(gè)統(tǒng)一的編程模型就可被運(yùn)用于任何使用了數(shù)據(jù)集對(duì)象的應(yīng)用程序。
ADO.NET體系結(jié)構(gòu)中還有一個(gè)非常重要的部分就是數(shù)據(jù)提供者對(duì)象(Data Provider),它是訪問數(shù)據(jù)庫的必備條件。ADO.NET體系結(jié)構(gòu)通過它應(yīng)用程序可以產(chǎn)生相應(yīng)的數(shù)據(jù)集對(duì)象;同時(shí)它還提供了連接模式下的數(shù)據(jù)庫訪問支持。圖1描述了ADO.NET總體的體系結(jié)構(gòu)。
ADO.NET的數(shù)據(jù)訪問技術(shù)的架構(gòu)。ADO.NET支持SQL Server數(shù)據(jù)訪問和OLE DB數(shù)據(jù)訪問。兩者相比,前者是針對(duì)SQL Server的數(shù)據(jù)庫訪問引擎,所以訪問SQL Server數(shù)據(jù)庫效率會(huì)高許多,但只支持SQL Server。后者是比較通用的數(shù)據(jù)庫訪問引擎,可以支持廣泛的數(shù)據(jù)庫,但效率不如前者。#t#
對(duì)開發(fā)者來說,如果不用到某種數(shù)據(jù)庫的特性,其大體使用方法是一致的。ADO.NET體系結(jié)構(gòu)數(shù)據(jù)庫的連接部分,Connetion對(duì)象。提供了與具體數(shù)據(jù)庫的連接方式,具體你是用SqlConnection對(duì)象還是OleDbConnection對(duì)象。
下面給出兩段典型的數(shù)據(jù)庫連接的例子。在此之前,請?jiān)诔绦蝾^部using處添加using System.Data.SqlClient或System.Data.OleDb,以保證數(shù)據(jù)庫訪問時(shí)用到的命名空間能引用。