?

基于的ADO.NET數據庫訪問技術研究

2008-07-14 10:05
電腦知識與技術 2008年18期
關鍵詞:語言

劉 瑩

摘要:ADO.NET是微軟針對ADO的缺陷而重新設計的一種全新的數據庫訪問技術。闡述了ADO.NET的結構與數據模型:數據提供程序和數據集。探討了利用ADO.NET技術訪問數據庫訪問的方式,同時給出了采用C#語言所實現的ADO.NET數據庫訪問技術在數據庫中編程中的具體實現方案。

關鍵詞:C#語言;ADO.NET;數據庫訪問

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)18-2pppp-0c

Research on Database Accessing Technology Based on ADO.NET

LIU Ying

(South-central University For Nationalities College of Business,Wuhan 430000,China)

Abstract:This thesis introduces the data accessing technology based on ADO.NET,illuminates the structure ande the data model of ADO.NET:data provider and data set.It described the way of the database access in using ADO.NET technology.Then the solution with C# language has been presented to use the ADO.NET database accessing technology in database programming.

Key words:c# language;ADO.NET;Database Accessing

1 引言

ActiveX Data Objects.NET(簡稱ADO.NET)是Microsoft公司設計的一種新的數據訪問技術。在.NET中,數據存取的任務都是通過ADO.NET完成。同以往的數據庫訪問技術相比,ADO.NET有很多數據處理的優勢。ADO.NET是為關系數據訪問和非關系數據訪問設計的數據連接模型,它可以實現對數據源的非連接處理;另外ADO.NET新增了一些對象,如DataReader類可以產生一個只讀的記錄集,用來實現對快速讀取數據。

2 ADO.NET的數據模型

ADO.NET有兩個核心組件:數據提供程序和數據集。

數據提供程序(data provider)連接數據源,支持數據訪問和處理。數據集(data set)支持數據以關聯的方式,在斷開連接的情況下獨立地緩存數據,根據需要更新數據源。

2.1 數據提供程序

ADO.NET中的數據提供程序主要有兩種:SQL SERVER數據提供程序和OLE DB數據提供程序

每個數據提供程序都是System.Data命名空間中的一個接口實現方式,專門用于特定的數據源。如SQL SERVER數據提供方式屬于System.Data.SqlClient,支持SQL SERVER 7或更新版本。而OLE DB數據提供程序屬于System.Data.OleDb命名空間,支持對SQL SERVER舊版本和其他數據庫(Access、DB2、MySQL和Oracle)的訪問。

以SQL SERVER數據提供程序為例,其中包含了3個主要的組件。

2.1.1 數據提供程序的連接類

SQL SERVER數據提供程序的連接類是SqlConnection,實現了System.Data.IDbConnection接口,用于實現與數據源的連接。

要與一個SQL SERVER數據庫建立連接,首先引入命名空間:

using System.Data;

using System.Data.SqlClient;

然后創建連接字符串。連接字符串主要用于指定連接信息的參數,通常包括目標SQL SERVER實例名稱,指定身份驗證模式,數據庫名等。

string constring=@”server=(local)sqlexpress;

integrated security=sspi;

database=northwind;”

最后創建連接,也就是SqlConnnection對象,同時將連接字符串作為參數傳遞給它

SqlConnection con=new SqlConnection(constring);

打開連接:

con.Open();

2.1.2Command對象

連接了數據庫以后,可以通過Command對象執行sql命令或是存儲過程來完成對數據庫的一些操作。

首先創建命令字符串:

string sql=@”select count(*)from employees”;

然后創建Command對象:

SqlCommand cmd=new SqlCommand(sql,con);

其中sql作為參數將傳遞給cmd.CommandText屬性,這個屬性用來保存要執行的sql語句;con作為參數傳遞給cmd.Connection屬性,其作用是將命令與數據庫的連接關聯起來。

最后執行命令:執行命令的方法有四種。方法的區別取決于sql代碼的結果。執行命令的方法如下表所示:

表1 執行命令的方法

以剛建立的cmd命令為例:

cmd.ExecuteScalar();

2.1.3 數據讀取器

數據讀取器是實現了System.Data.IDataReader接口的對象。數據讀取器用來讀取查詢的結果集。它是快速的、未緩存的、只向前移動的、只讀的、已連接數據源的、逐行檢索數據的數據流。數據讀取器適用于只想讀取和顯示數據的時候。

首先實例化數據讀取器:

SqlDataReader rd=cmd.ExecuteReader();

這里需要注意的是,由于SqlDataReader是抽象類,不能顯示的實例化,必須執行SqlCommand的ExecuteReader()方法來獲得SqlDataReader的實例。

接著,調用SqlDataReader的Read()方法來遍歷返回結果集的每一行。在Read()方法中,如果存在下一行就返回true,并向前移動游標;如果沒有下一行,就返回false。由于Read把游標移動到下一個記錄,所以每次都必須手工調用這個方法。一般使用while循環來完成操作:

while(rd.Read())

然后訪問數據:

在調用了Read()方法后,下一行就以集合的形式返回,存儲在SqlDataReader對象中。如果要訪問某一列的數據,可以使用許多方法。如果使用序數索引器方法(就像提供整數數組的索引一樣),就給數據讀取器提供列號以檢索值:

Console.WriteLine(“{0}{1}”,rd[0],rd[1]);

也可以使用列名索引器,把列名傳遞給數據讀取器:

Console.WriteLine(“{0}{1}”,rd[“EmployeeId”],rd[“LastName”])

使用列名索引器有很多優點。當表因為某個原因添加或刪除一個或多個列時,擾亂了列的順序,在使用序數索引器查找方法的代碼中則會產生異常。而使用列名索引器可以解決這個問題。但為了快速得到結果,還是應該使用序數所引器的方法。

2.2 數據集

ADO.NET中的數據集是多層數據庫應用程序開發的一大進步。數據集允許在本地高速緩存中存儲和修改大量數據,把數據看成表,斷開與數據庫的連接,以脫機方式處理數據。

2.2.1 數據適配器

數據適配器對象在數據集和源數據之間起到橋梁作用。數據適配器對象使用Fill()方法將數據填充到DataSet的DataTable中去,并提供將異動的數據更新到數據源的能力。

數據集、數據適配器和數據源之間的關系如圖1。

圖1 數據集、數據適配器和數據源之間的關系

創建數據適配器:

SqlDataAdapter da=new SqlDataAdapter(cmd);

2.2.2 數據集

數據集對象是ADO.NET對象模型中最核心的對象。一個數據集對象就是一個記錄集的集合,它相當于數據緩沖區。ADO.NET框架提供了記錄集的所有數據庫功能。

首先構造數據集:

DataSet ds=new DataSet();

然后調用SqlDataAdapter的Fill方法填充數據集

da.Fill(ds,”employees”);

經過以上填充,就把查詢的結果填入數據集中,可以實現脫機處理數據。

3 小結

ADO.NET是開發數據庫系統的重要技術。ADO.NET最突出的特性是可以采用非連接的方式的訪問和處理數據。與ADO相比,ADO.NET只在必要的時候對數據庫進行連接,當處理完畢后它將及時關閉連接,保證了虎踞堀服務器資源的可用性,使它可以為更多的用戶服務,更加適合網絡應用。

參考文獻:

[1]James Huddleston.C#數據庫入門經典[M].2版.北京:清華大學出版社,2006.

[2]萬科,覃劍.Visual c#.NET程序設計基礎與上機指導[M].北京:清華大學出版社,2007.

[3]王煒奇.基于ADO.NET的數據訪問技術分析與應用[J].蘭州工業高等??茖W校學報,2007,14(2):37-40.

[4]張娜,張劍萍,朱玉文,等.ADO.NET數據訪問技術的應用研究[J].北京農學院學報,2007,22(增刊2):188-190.

收稿日期:2008-04-03

作者簡介:劉瑩(1981-),女,湖北武漢人,助教,碩士,研究方向為數據庫系統理論與應用。

猜你喜歡
語言
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補正之道
累積動態分析下的同聲傳譯語言壓縮
論語言的“得體”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合