亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2009-10-29 10:07:54徐祥濤

        徐祥濤

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

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

        1 引言

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

        2 ADO.NET概述

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

        2.1 ADO.NET的功能

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

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

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

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

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

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

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

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

        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ù)庫(kù)

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

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

        SqlCommand SCM = new SqlCommand();

        SCM.CommandText = "select * from tdbStudent";

        SCM.Connection = SCN;

        還有一種更簡(jiǎn)便的方法如下:

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

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

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

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

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

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

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

        SqlDataAdapter SDAP = new SqlDataAdapter();

        SDA.SelectCommand = selectCMD;

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

        SDAP.Fill(DS, "student");

        Page.Response.Write("

        "); //5 顯示其中的DataTable對(duì)象中的數(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ù)庫(kù)。然而無(wú)論使用什么樣的Data Provider,你將使用相似的對(duì)象與數(shù)據(jù)源進(jìn)行交互。

        參考文獻(xiàn)

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

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

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

        丰满人妻中文字幕一区三区| 久久精品国产亚洲不av麻豆| 亚洲无码美韩综合| 国产精品高湖呻呤久久av| 无遮挡很爽视频在线观看| 日本精品人妻一区二区| 久草视频这里只有精品| 欧美牲交a欧美牲交| 欧美精品videosse精子| 国内精品卡一卡二卡三| 久久国产自偷自免费一区100| 甲状腺囊实性结节三级| 国产在线观看网址不卡一区 | 日本又色又爽又黄的a片18禁| 曰欧一片内射vα在线影院| 中文字幕av一区中文字幕天堂| 中文字幕喷水一区二区| av一区二区三区亚洲| 亚洲人妻御姐中文字幕| 亚洲国产精品不卡av在线| 色 综合 欧美 亚洲 国产| 夜夜爽一区二区三区精品| 亚洲人成网站18男男| 少妇又紧又爽丰满在线视频| 久久午夜无码鲁丝片午夜精品| 精品久久久噜噜噜久久久| 国产精品一区二区三区精品| 国产亚洲精品视频在线| 国内自拍情侣露脸高清在线| 欧美精品亚洲精品日韩专区| 国产精品麻豆成人av电影艾秋 | 亚洲色图视频在线| 黄色大片一区二区中文字幕| 伊人久久大香线蕉av不变影院| 手机福利视频| 国产成人精选在线不卡| 亚洲每天色在线观看视频| 亚洲人成网站色在线入口口| 欧美大屁股xxxx| 欧美在线综合| 天天综合色中文字幕在线视频|