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