• 
    

    
    

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

      基于ADO.NET數(shù)據(jù)庫訪問技術(shù)的研究與實現(xiàn)

      2009-10-29 10:07:54徐祥濤
      中國新技術(shù)新產(chǎn)品 2009年17期

      徐祥濤

      摘要:ADO.NET是基于.NET平臺下的數(shù)據(jù)庫訪問技術(shù),本文闡述了ADO.NET的功能、結(jié)構(gòu)和對象模型,給出了基于C#.NET的ADO.NET技術(shù)訪問數(shù)據(jù)庫的具體實現(xiàn)過程,并給出了部分實現(xiàn)代碼。

      關(guān)鍵詞:ADO.NET; 數(shù)據(jù)集; 數(shù)據(jù)提供程序

      1 引言

      數(shù)據(jù)庫訪問技術(shù)一直是數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)中的難點和重點,也是每個數(shù)據(jù)庫軟件開發(fā)者必須要考慮的環(huán)節(jié)。ADO.NET微軟最新的數(shù)據(jù)訪問技術(shù),是數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)源間溝通的橋梁,主要提供一個面向?qū)ο蟮臄?shù)據(jù)存取架構(gòu),用來開發(fā)數(shù)據(jù)庫應(yīng)用程序。

      2 ADO.NET概述

      ADO.NET是.NET Framework提供的一系列類,提供了對關(guān)系數(shù)據(jù)、XML和應(yīng)用程序數(shù)據(jù)的訪問,是.NET Framework 中最重要的組成部分。

      2.1 ADO.NET的功能

      ADO.NET是連接系統(tǒng)前、后端的關(guān)鍵。在典型的數(shù)據(jù)庫應(yīng)用體系結(jié)構(gòu)中,用戶和數(shù)據(jù)庫系統(tǒng)的交互過程是:首先,用戶通過用戶界面向系統(tǒng)發(fā)出數(shù)據(jù)操作的請求,用戶界面接收請求后傳到ADO.NET;然后,ADO.NET分析用戶請求,并通過數(shù)據(jù)庫訪問接口于數(shù)據(jù)源交互,向數(shù)據(jù)源發(fā)送SQL指令,并從數(shù)據(jù)源獲取數(shù)據(jù);最后,ADO.NET將數(shù)據(jù)訪問結(jié)果傳回用戶界面。

      2.2 ADO.NET的基本結(jié)構(gòu)

      ADO.NET將其組件區(qū)分為:"數(shù)據(jù)存取"與"數(shù)據(jù)操作"兩大類,負(fù)責(zé)完成這些處理的兩大中心組件是:數(shù)據(jù)集(DateSet)和數(shù)據(jù)提供程序(Data Providers)。數(shù)據(jù)集代表了實際的數(shù)據(jù)而數(shù)據(jù)提供程序就是用來連接數(shù)據(jù)庫、執(zhí)行命令和提取結(jié)果的。數(shù)據(jù)提供程序有兩種:一種是SQL Server數(shù)據(jù)提供程序;另一種是一般的數(shù)據(jù)提供程序,它可以與任何一個OLEDB數(shù)據(jù)源通信。數(shù)據(jù)提供程序包含下列組件專門負(fù)責(zé)數(shù)據(jù)操作并且能夠以快速、順序和只讀方式來存取數(shù)據(jù):Connection、Command、DataReader和DataAdapter。

      3 使用ADO.NET訪問數(shù)據(jù)庫

      對數(shù)據(jù)庫進(jìn)行操作,首先是與數(shù)據(jù)庫建立連接,其次發(fā)出SQL命令或存儲過程進(jìn)行相應(yīng)操作,之后由數(shù)據(jù)集返回所需的數(shù)據(jù)記錄,最后將修改后的結(jié)果返回到數(shù)據(jù)庫。

      3.1 連接數(shù)據(jù)庫

      要使用ADO.NET從數(shù)據(jù)庫發(fā)送和檢索數(shù)據(jù),必須首先創(chuàng)建對數(shù)據(jù)庫的連接。連接是客戶應(yīng)用程序和ADO.NET之間的管道,在ADO.NET的兩種工作模式(連接模式和非連接模式)中都使用。ADO.NET提供了兩個類來創(chuàng)建連接,第一個是通用的OleDbConnection類,它創(chuàng)建處理不同的數(shù)據(jù)庫類型的連接。第二個是SqlConnection類,它創(chuàng)建的連接只處理只處理SQL Server數(shù)據(jù)庫,并優(yōu)化了性能。

      本文以連接SQL Server數(shù)據(jù)庫為例,首先建立一個名為SCN的SqlConnection對象,再使用ConnectionString屬性來設(shè)置要連接的數(shù)據(jù)庫種類和所在的位置,最后用Open方法來打開數(shù)據(jù)庫,如下所示:

      SqlConnection SCN = new SqlConnection();

      SCN. ConnectionString =

      "Persist Security Info=False;User id=sa;pwd=frock;database=Student;server=(local)";

      SCN.Open();

      3.2 操作數(shù)據(jù)庫

      創(chuàng)建了數(shù)據(jù)庫連接之后,下一步就是通過連接發(fā)送請求來選擇數(shù)據(jù)。對數(shù)據(jù)庫執(zhí)行命令操作,如進(jìn)行數(shù)據(jù)的查詢、修改、添加、刪除等,實際上就是傳送SQL指令,SQL指令封裝在Command對象中。操縱數(shù)據(jù)庫可以通過多種方式來實現(xiàn),常用的對象是SqlCommand對象(表示一個SQL操作或者一個存儲過程)和SqlDataAdpater對象(把一個SqlCommand提交給SQL Server數(shù)據(jù)庫)。

      本文以SqlCommand對象為例,其過程為:先定義一個SqlCommand對象,再通過設(shè)置它的CommandText屬性來指定對數(shù)據(jù)庫進(jìn)行的操作(SQL語句可以是查詢、添加、修改和刪除等),然后指明SqlCommand對象所用到的SqlConnection對象。

      SqlCommand SCM = new SqlCommand();

      SCM.CommandText = "select * from tdbStudent";

      SCM.Connection = SCN;

      還有一種更簡便的方法如下:

      SqlCommand SCM = new SqlCommand("select * from tdbStudent", SCN);

      根據(jù)不同的操作目的選擇執(zhí)行命令的方式,SqlCommand 特別提供了以下對 SQL Server 數(shù)據(jù)庫執(zhí)行命令的方法。

      3.3 獲取數(shù)據(jù)集

      ADO.NET 支持面向流的數(shù)據(jù)訪問(如DataReader 對象)和基于集的數(shù)據(jù)訪問(如DataSet 對象)。

      3.3.1 面向流的數(shù)據(jù)訪問

      可以從數(shù)據(jù)庫中順向逐條從數(shù)據(jù)庫中讀取由SELECT 命令返回的只讀數(shù)據(jù)流,而且當(dāng)前內(nèi)存中每次只存一條記錄。DataReader對象的讀取數(shù)據(jù)方式是先通過Connection 對象和數(shù)據(jù)庫聯(lián)機(jī),再通過Command 對象的ExecuteReader 方法執(zhí)行SQLSELECT 命令獲取查詢的數(shù)據(jù), 再通過DataReader 對象的屬性和方法,將獲取的數(shù)據(jù)以只讀方式從當(dāng)前的數(shù)據(jù)記錄順向逐條處理,最后將數(shù)據(jù)放入內(nèi)存或直接顯示在窗體上。但是要注意在DataReader 開啟時, 必須和數(shù)據(jù)庫一直保持聯(lián)機(jī), 此時Connection 只提供給DataReader 使用, 必須等到DataReader 關(guān)閉后, 才允許執(zhí)行其他Connection 命令。DataReader 適用于只需返回一個簡單的只讀記錄集的情況。DataReader 最主要的方法是Read, 用于從查詢結(jié)果中獲取數(shù)據(jù)行。DataReader 每執(zhí)行一次Read()方法, 就返回一個Bool 值, 說明是否有數(shù)據(jù)可讀, 并且所檢索的數(shù)據(jù)向下走一行。

      SqlDataReader SDR;

      SDR = CM.ExecuteReader();

      this.lstUser.Items.Clear();

      while (DR.Read())

      this.lstUser.Items.Add(DR[0].ToString());

      3.3.2 面向集的數(shù)據(jù)訪問

      數(shù)據(jù)適配器, 包含將數(shù)據(jù)從數(shù)據(jù)庫中取出的方法, 和將數(shù)據(jù)寫回數(shù)據(jù)庫的方法, 是數(shù)據(jù)庫和DataSet 之間溝通的橋梁。DataAdapter 對象使用Command 對象執(zhí)行SQL 命令, 將從數(shù)據(jù)庫獲取的數(shù)據(jù)送到DataSet, 此時便可使用DataTable 對象來存取數(shù)據(jù)表, 將DataSet里面的數(shù)據(jù)經(jīng)過處理后再送回數(shù)據(jù)庫。

      SqlDataAdapter SDAP = new SqlDataAdapter();

      SDA.SelectCommand = selectCMD;

      DataSet DS = new DataSet();//4 填充DataSet

      SDAP.Fill(DS, "student");

      Page.Response.Write("

      "); //5 顯示其中的DataTable對象中的數(shù)據(jù)

      for (int i = 0; i < DS.Tables[0].Rows.Count; i++)

      {

      Page.Response.Write("

      ");

      for (int j = 0; j < DS.Tables[0].Columns.Count; j++)

      {

      Page.Response.Write("

      ");

      }

      Page.Response.Write("

      ");

      }

      Page.Response.Write("

      " + DS.Tables[0].Rows[i].ItemArray[j] + "
      ");

      4小結(jié)

      ADO.NET是與數(shù)據(jù)源交互的.NET技術(shù)。有許多的Data Providers,它將允許與不同的數(shù)據(jù)源交流——取決于它們所使用的協(xié)議或者數(shù)據(jù)庫。然而無論使用什么樣的Data Provider,你將使用相似的對象與數(shù)據(jù)源進(jìn)行交互。

      參考文獻(xiàn)

      [1] 劉乃麗.ASP.NET 2.0 網(wǎng)絡(luò)開發(fā)詳解[M].北京:電子工業(yè)出版社.2008.

      [2] 茅健.Visual Basic.NET+SQL Server全程指南[M].北京:電子工業(yè)出版社.2008.

      [3] Michael Ekedahl著,馬海軍,楊繼萍等譯. Visual Basic.NET程序設(shè)計高級教程[M].北京:清華大學(xué)出版社.2005.

      呼玛县| 淮滨县| 绍兴县| 聂拉木县| 兴城市| 大余县| 剑川县| 龙江县| 济宁市| 云龙县| 水富县| 江源县| 株洲县| 乌兰浩特市| 荣昌县| 泽库县| 沙湾县| 太仆寺旗| 乐清市| 西华县| 沭阳县| 吉安市| 循化| 泗洪县| 新巴尔虎右旗| 五峰| 镇平县| 马尔康县| 麟游县| 唐海县| 天津市| 隆子县| 阳东县| 潼关县| 尚志市| 裕民县| 兴化市| 浠水县| 玉山县| 唐山市| 夏河县|