国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于的ADO.NET數(shù)據(jù)庫訪問技術(shù)研究

2008-07-14 10:05
電腦知識與技術(shù) 2008年18期
關(guān)鍵詞:語言

劉 瑩

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

關(guān)鍵詞:C#語言;ADO.NET;數(shù)據(jù)庫訪問

中圖分類號:TP311文獻(xiàn)標(biāo)識碼: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公司設(shè)計的一種新的數(shù)據(jù)訪問技術(shù)。在.NET中,數(shù)據(jù)存取的任務(wù)都是通過ADO.NET完成。同以往的數(shù)據(jù)庫訪問技術(shù)相比,ADO.NET有很多數(shù)據(jù)處理的優(yōu)勢。ADO.NET是為關(guān)系數(shù)據(jù)訪問和非關(guān)系數(shù)據(jù)訪問設(shè)計的數(shù)據(jù)連接模型,它可以實現(xiàn)對數(shù)據(jù)源的非連接處理;另外ADO.NET新增了一些對象,如DataReader類可以產(chǎn)生一個只讀的記錄集,用來實現(xiàn)對快速讀取數(shù)據(jù)。

2 ADO.NET的數(shù)據(jù)模型

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

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

2.1 數(shù)據(jù)提供程序

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

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

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

2.1.1 數(shù)據(jù)提供程序的連接類

SQL SERVER數(shù)據(jù)提供程序的連接類是SqlConnection,實現(xiàn)了System.Data.IDbConnection接口,用于實現(xiàn)與數(shù)據(jù)源的連接。

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

using System.Data;

using System.Data.SqlClient;

然后創(chuàng)建連接字符串。連接字符串主要用于指定連接信息的參數(shù),通常包括目標(biāo)SQL SERVER實例名稱,指定身份驗證模式,數(shù)據(jù)庫名等。

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

integrated security=sspi;

database=northwind;”

最后創(chuàng)建連接,也就是SqlConnnection對象,同時將連接字符串作為參數(shù)傳遞給它

SqlConnection con=new SqlConnection(constring);

打開連接:

con.Open();

2.1.2Command對象

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

首先創(chuàng)建命令字符串:

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

然后創(chuàng)建Command對象:

SqlCommand cmd=new SqlCommand(sql,con);

其中sql作為參數(shù)將傳遞給cmd.CommandText屬性,這個屬性用來保存要執(zhí)行的sql語句;con作為參數(shù)傳遞給cmd.Connection屬性,其作用是將命令與數(shù)據(jù)庫的連接關(guān)聯(lián)起來。

最后執(zhí)行命令:執(zhí)行命令的方法有四種。方法的區(qū)別取決于sql代碼的結(jié)果。執(zhí)行命令的方法如下表所示:

表1 執(zhí)行命令的方法

以剛建立的cmd命令為例:

cmd.ExecuteScalar();

2.1.3 數(shù)據(jù)讀取器

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

首先實例化數(shù)據(jù)讀取器:

SqlDataReader rd=cmd.ExecuteReader();

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

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

while(rd.Read())

然后訪問數(shù)據(jù):

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

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

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

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

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

2.2 數(shù)據(jù)集

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

2.2.1 數(shù)據(jù)適配器

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

數(shù)據(jù)集、數(shù)據(jù)適配器和數(shù)據(jù)源之間的關(guān)系如圖1。

圖1 數(shù)據(jù)集、數(shù)據(jù)適配器和數(shù)據(jù)源之間的關(guān)系

創(chuàng)建數(shù)據(jù)適配器:

SqlDataAdapter da=new SqlDataAdapter(cmd);

2.2.2 數(shù)據(jù)集

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

首先構(gòu)造數(shù)據(jù)集:

DataSet ds=new DataSet();

然后調(diào)用SqlDataAdapter的Fill方法填充數(shù)據(jù)集

da.Fill(ds,”employees”);

經(jīng)過以上填充,就把查詢的結(jié)果填入數(shù)據(jù)集中,可以實現(xiàn)脫機(jī)處理數(shù)據(jù)。

3 小結(jié)

ADO.NET是開發(fā)數(shù)據(jù)庫系統(tǒng)的重要技術(shù)。ADO.NET最突出的特性是可以采用非連接的方式的訪問和處理數(shù)據(jù)。與ADO相比,ADO.NET只在必要的時候?qū)?shù)據(jù)庫進(jìn)行連接,當(dāng)處理完畢后它將及時關(guān)閉連接,保證了虎踞堀服務(wù)器資源的可用性,使它可以為更多的用戶服務(wù),更加適合網(wǎng)絡(luò)應(yīng)用。

參考文獻(xiàn):

[1]James Huddleston.C#數(shù)據(jù)庫入門經(jīng)典[M].2版.北京:清華大學(xué)出版社,2006.

[2]萬科,覃劍.Visual c#.NET程序設(shè)計基礎(chǔ)與上機(jī)指導(dǎo)[M].北京:清華大學(xué)出版社,2007.

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

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

收稿日期:2008-04-03

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

猜你喜歡
語言
讓語言描寫搖曳多姿
多向度交往對語言磨蝕的補(bǔ)正之道
累積動態(tài)分析下的同聲傳譯語言壓縮
論語言的“得體”