• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      劉 瑩

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

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

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

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

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

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

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

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

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

      以SQL SERVER數(shù)據(jù)提供程序?yàn)槔?,其中包含?個(gè)主要的組件。

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

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

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

      using System.Data;

      using System.Data.SqlClient;

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

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

      integrated security=sspi;

      database=northwind;”

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

      SqlConnection con=new SqlConnection(constring);

      打開(kāi)連接:

      con.Open();

      2.1.2Command對(duì)象

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

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

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

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

      SqlCommand cmd=new SqlCommand(sql,con);

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

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

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

      以剛建立的cmd命令為例:

      cmd.ExecuteScalar();

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

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

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

      SqlDataReader rd=cmd.ExecuteReader();

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

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

      while(rd.Read())

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

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

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

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

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

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

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

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

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

      數(shù)據(jù)適配器對(duì)象在數(shù)據(jù)集和源數(shù)據(jù)之間起到橋梁作用。數(shù)據(jù)適配器對(duì)象使用Fill()方法將數(shù)據(jù)填充到DataSet的DataTable中去,并提供將異動(dòng)的數(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ù)集對(duì)象是ADO.NET對(duì)象模型中最核心的對(duì)象。一個(gè)數(shù)據(jù)集對(duì)象就是一個(gè)記錄集的集合,它相當(dāng)于數(shù)據(jù)緩沖區(qū)。ADO.NET框架提供了記錄集的所有數(shù)據(jù)庫(kù)功能。

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

      DataSet ds=new DataSet();

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

      da.Fill(ds,”employees”);

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

      3 小結(jié)

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

      參考文獻(xiàn):

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

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

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

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

      收稿日期:2008-04-03

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

      猜你喜歡
      語(yǔ)言
      讓語(yǔ)言描寫搖曳多姿
      多向度交往對(duì)語(yǔ)言磨蝕的補(bǔ)正之道
      累積動(dòng)態(tài)分析下的同聲傳譯語(yǔ)言壓縮
      論語(yǔ)言的“得體”
      湾仔区| 清徐县| 都匀市| 盐源县| 新津县| 郓城县| 甘洛县| 呼和浩特市| 体育| 靖安县| 浮山县| 柳州市| 车险| 德安县| 区。| 张家口市| 潼关县| 本溪市| 漯河市| 都匀市| 济南市| 黄平县| 凌海市| 沾化县| 惠东县| 普定县| 灵武市| 濮阳市| 自治县| 哈巴河县| 乌拉特后旗| 肇东市| 克山县| 太和县| 沭阳县| 梨树县| 扬中市| 肇州县| 静乐县| 台北县| 峨眉山市|