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

?

基于ADO.NET數(shù)據(jù)庫訪問技術(shù)淺析

2012-04-29 03:10:09李成楠楊晶
科技創(chuàng)新導(dǎo)報(bào) 2012年12期
關(guān)鍵詞:數(shù)據(jù)源應(yīng)用程序編程

李成楠 楊晶

引言

Microsoft ActiveX Data Objects(ADO).NET是一種把基于Microsoft.NET的Web應(yīng)用程序以及Microsoft Windows應(yīng)用程序連接到諸如SQL Server數(shù)據(jù)庫或XML文件等數(shù)據(jù)源的技術(shù)。ADO.NET專門為諸如Internet這樣的無連接的工作環(huán)境而設(shè)計(jì),它提供了一種簡單而靈活的方法,便于開發(fā)人員把數(shù)據(jù)訪問和數(shù)據(jù)處理集成到Web應(yīng)用程序中。

ADO.NET結(jié)構(gòu)作為一個(gè)高效的.NET程序語言。其混合了函數(shù)語言和物件導(dǎo)向程序編制語言,并且完美的是用于編程、算法、技術(shù)和探索性開發(fā),因此可以在使用的過程當(dāng)中感受到趣味性和吸引力。

1 組成及功能

ADO.NET是微軟.NET框架的一部分,它由一組工具和層組成,應(yīng)用程序可以借此與基于文件或基于服務(wù)器的數(shù)據(jù)存儲(chǔ)很輕松地進(jìn)行通信和管理。ADO.NET是在.NET Framework環(huán)境中用于訪問數(shù)據(jù)庫的一組組件類。在基于.NET Framework開發(fā)的應(yīng)用程序中,如果要訪問數(shù)據(jù)庫,是用ADO.NET是目前的最佳選擇。ADO.NET是與C#和.NET Framework一起使用的類集的名稱,用于以關(guān)系型的、面向表的格式訪問數(shù)據(jù)。使用ADO.NET可以更容易地實(shí)現(xiàn)對(duì)關(guān)系和非關(guān)系數(shù)據(jù)的訪問,并且ADO.NET統(tǒng)一了XML和關(guān)系數(shù)據(jù)訪問,支持Internet上的多層應(yīng)用程序,與上一代技術(shù)相比,ADO.NET可以擴(kuò)充以支持更多的數(shù)據(jù)源。

ADO.NET可以使用XML作為通用的數(shù)據(jù)傳送格式。只要處理數(shù)據(jù)的不同的平臺(tái)有XML分析程序,就可以實(shí)現(xiàn)不同平臺(tái)之間極好的互操作性。其次,ADO.NET具有十分強(qiáng)大的可伸縮性。對(duì)于Web應(yīng)用程序來說,很難估計(jì)同一個(gè)時(shí)刻會(huì)有多少用戶在提交訪問。而在使用ADO時(shí),ADO的可伸縮性不強(qiáng)通常合成為導(dǎo)致服務(wù)器崩潰的主要原因之一。而在ADO.NET中,由于對(duì)已經(jīng)斷開連接的數(shù)據(jù)集并不保存長時(shí)間的數(shù)據(jù)鎖和數(shù)據(jù)連接,所以相比之下,服務(wù)器端的負(fù)荷就大大減少。

2 ADO.NET與ADO的差異

ADO.NET是一種基于Microsoft ADO的新技術(shù),它并不是ADO的修訂版,而是建立在ADO之上,用于處理數(shù)據(jù)的一種全新技術(shù)。ADO.NET在以前的ADO版本的基礎(chǔ)上做了許多改進(jìn),大大簡化了Web應(yīng)用程序與數(shù)據(jù)庫連接處理。ADO.NET與ADO可以共存。雖然大部分基于.NET的Web應(yīng)用程序使用ADO.NET,但是通過使用.NET COM互操作服務(wù)可使ADO對(duì).NET程序員仍然可用。

ADO.NET是一系列用于連接和處理數(shù)據(jù)源的類,與基于COM、依賴于連接并使用OLEDB訪問數(shù)據(jù)的ADO不同。ADO.NET是為在無連接的環(huán)境中連接數(shù)據(jù)而特別設(shè)計(jì)的,這使得它成為基于Internet的Web應(yīng)用程序的最佳選擇。ADO.NET用XML作為在數(shù)據(jù)庫與Web應(yīng)用程序之間往返傳輸數(shù)據(jù)的形式,這確保了它比ADO具有更強(qiáng)大的兼容性和靈活性。

在ADO中,數(shù)據(jù)在內(nèi)存中的表示形式為記錄集,在ADO.NET中,它為數(shù)據(jù)集。他們之間有很大的差異。

3 ADO.NET的對(duì)象體系

ADO.NET可以在兩種模式下工作:非連接模式和連接模式。其中,在連接模式下訪問數(shù)據(jù)庫,應(yīng)用程序需要首先創(chuàng)建對(duì)數(shù)據(jù)庫的連接,然后把命令發(fā)送到連接,再連接將命令傳遞到數(shù)據(jù)庫,最后將從數(shù)據(jù)庫返回的數(shù)據(jù)保存到DataReader對(duì)象中;而在非連接模式下,從數(shù)據(jù)庫返回的數(shù)據(jù)被保存到ADO.NET中的DataSet組件中,該組件允許應(yīng)用程序從數(shù)據(jù)庫檢索數(shù)據(jù),并可以離線處理,然后創(chuàng)建新連接把對(duì)數(shù)據(jù)庫的更新保存到數(shù)據(jù)庫中。

3.1 連接對(duì)象

面向連接的部分是那些數(shù)據(jù)源交互和處理時(shí)必須要有打開的可用連接的對(duì)象。在ADO.NET中面向連接的部分主要包括如下對(duì)象:

(1)Connection對(duì)象表示一個(gè)數(shù)據(jù)源的開放式連接。用戶必須首先創(chuàng)建一個(gè)Connection對(duì)象,然后再使用其它的對(duì)象來訪問數(shù)據(jù)庫。因此,Connection對(duì)象是ADO對(duì)象模型的基礎(chǔ)。連接對(duì)象的例子有OleDb Connection、SqlConnection等。

(2)Command對(duì)象代表對(duì)數(shù)據(jù)源執(zhí)行的命令。使用Command命令可以查詢數(shù)據(jù),并將查詢結(jié)果返回給RecordSet對(duì)象。

(3)Parameter對(duì)象表示Command對(duì)象的一個(gè)獨(dú)立參數(shù)。這個(gè)對(duì)象是SQL查詢時(shí)的一個(gè)運(yùn)行參數(shù),或者是存儲(chǔ)過程中的輸入或輸出參數(shù)。

(4)DataAdapter對(duì)象充當(dāng)DataSet和數(shù)據(jù)源之間用于檢索和保存數(shù)據(jù)的橋梁。DataAdapter類代表用于填充DataSet以及更新數(shù)據(jù)源的一組數(shù)據(jù)庫命令和一個(gè)數(shù)據(jù)庫連接。DataAdapter對(duì)象是ADO.NET數(shù)據(jù)提供程序的組成部分,該數(shù)據(jù)提供程序還包括連接對(duì)象、數(shù)據(jù)讀取器對(duì)象和命令對(duì)象。

(5)DataReader對(duì)象是一個(gè)快速而易于使用的對(duì)象,可以從數(shù)據(jù)源中讀取僅能向前和只讀的數(shù)據(jù)流。此對(duì)象具有最好的功能,可以簡單地讀取數(shù)據(jù)。

3.2 非連接對(duì)象

非連接對(duì)象是使用ADO.NET構(gòu)建的。非連接應(yīng)用程序通常盡可能晚地連接,并且盡早地?cái)嚅_連接。ADO.NET中非連接的部分主要需要如下對(duì)象:

(1)DataSet類是ADO.NET的主要成員之一,它是從數(shù)據(jù)庫中檢索到的數(shù)據(jù)在內(nèi)存中的緩存,代表了一個(gè)或多個(gè)數(shù)據(jù)庫表中數(shù)據(jù)的非連接視圖。

(2)DataTablel對(duì)象代表在DataSet中的表。一個(gè)DataSet對(duì)象通常包含一個(gè)或多DataTablel對(duì)象。每個(gè)DataTablel對(duì)象又包含一個(gè)或多個(gè)DataColumn和DataRow。它以行或列存儲(chǔ)數(shù)據(jù)。

(3)DataColumn對(duì)象代表表中的一列。

(4)DataRow對(duì)象代表來自表的關(guān)聯(lián)數(shù)據(jù)的一行。

(5)DataView的一個(gè)主要功能是允許在Windows窗體和Web窗體上進(jìn)行數(shù)據(jù)綁定。另外,可自定義DataView來表示DataTable中數(shù)據(jù)的子集。此功能擁有綁定到同一DataTable,但顯示不同數(shù)據(jù)版本的兩個(gè)空間。

(6)DataRelation對(duì)象代表通過共享列而發(fā)生關(guān)系的兩個(gè)表之間的關(guān)系。每個(gè)DataR elation對(duì)象通過DataColumn對(duì)象與一對(duì)DataTable對(duì)象關(guān)聯(lián)。通過匹配兩張表中的列可以建立關(guān)系。

4 數(shù)據(jù)訪問的3個(gè)典型階段

數(shù)據(jù)訪問有3個(gè)典型階段:首先從數(shù)據(jù)源中訪問數(shù)據(jù),并把數(shù)據(jù)顯示出來;然后進(jìn)行數(shù)據(jù)處理;會(huì)后把更新后的數(shù)據(jù)返回到數(shù)據(jù)庫。

4.1 訪問數(shù)據(jù)

用戶請(qǐng)求一個(gè)頁面,頁面創(chuàng)建SqlConne ction對(duì)象和SqlDataAdapter對(duì)象,使用SqlDataAdapter對(duì)象從數(shù)據(jù)庫中生成一個(gè)DataSet,然后通過控件把DataSet返回給用戶。

4.2 處理數(shù)據(jù)

生成DataSet后,用戶就可以瀏覽并處理數(shù)據(jù)。瀏覽和處理數(shù)據(jù)的時(shí)候,客戶端與Web服務(wù)器之間沒有連接,Web服務(wù)器和數(shù)據(jù)庫服務(wù)器之間也沒有連接。DataSet的設(shè)計(jì)使得這種無連接的系統(tǒng)比較容易實(shí)現(xiàn)。由于DataSet是無狀態(tài)的,所以可以在Web服務(wù)器和客戶端之間安全傳輸而無需占用服務(wù)器資源。

4.3 更新數(shù)據(jù)庫

用戶完成瀏覽并修改數(shù)據(jù)之后,客戶端把修改后的DataSet返回到頁面,此頁面用DataAdapter協(xié)調(diào)返回的DataSet與數(shù)據(jù)庫中原始數(shù)據(jù)之間的變化。數(shù)據(jù)以XML格式先在客戶端和Web服務(wù)器之間傳送,然后在Web服務(wù)器和數(shù)據(jù)庫服務(wù)器之間傳送。

5 編程中的應(yīng)用

在實(shí)際應(yīng)用中,建立程序與數(shù)據(jù)庫的連接如下:

(1)首先要導(dǎo)入所需要的命名空間;

(2)建立指向數(shù)據(jù)的數(shù)據(jù)連接;

(3)在此數(shù)據(jù)連接上,建立一個(gè)SQL語句,用來返回所需要用的數(shù)據(jù)集;

(4)打開數(shù)據(jù)連接,執(zhí)行SQL語句,返回所需的數(shù)據(jù)集;

(5)關(guān)閉數(shù)據(jù)集,關(guān)閉數(shù)據(jù)連接。

相關(guān)的代碼如下:

using System;

using System.Data.SqlClient;

using System.Windows.Forms;

string strConnect=”server=.//sqlexpress;integrated security=true;database=myData”;

SqlConnection con=new SqlConnection(strConnect);

SqlCommand cmd=new SqlCommand();

con.Open();

SqlDataReader reader=cmd.ExcuteReader();

reader.Close();

con.Close();

6 ADO.NET的好處

使用ADO.NET的好處分成以下類別:

互操作性:ADO.NET應(yīng)用程序可以利用XML的靈活性和廣泛接受性。由于XML是用于在網(wǎng)絡(luò)中傳輸數(shù)據(jù)集的格式,因此可以讀取XML格式的任何組件都可以處理數(shù)據(jù)。

可維護(hù)性:在已部署系統(tǒng)的生存期中,適度的更改是可能的,但由于十分困難,所以很少嘗試進(jìn)行實(shí)質(zhì)的結(jié)構(gòu)更改。

可編程性:Visual Studio中的ADO.NET數(shù)據(jù)組件以不同方式封裝數(shù)據(jù)訪問功能,幫助您加快編程速度并減少犯錯(cuò)幾率。例如,數(shù)據(jù)命令提取生成和執(zhí)行SQL語句或存儲(chǔ)過程的任務(wù)。

結(jié)語

通過以上的介紹,首先,在ADO.NET結(jié)構(gòu)和功能的基礎(chǔ)上,分析了ADO.NET與ADO差異;其次,分別對(duì)ADO.NET的對(duì)象體系的主要對(duì)象進(jìn)行了說明;最后,在編程中對(duì)數(shù)據(jù)庫連接方法的實(shí)現(xiàn)??梢粤私獾紸DO.NET為數(shù)據(jù)庫的訪問提供了一種全新的、簡單高效的數(shù)據(jù)庫訪問技術(shù),它使得數(shù)據(jù)編程變得更加容易;同時(shí),也為編程人員提供了功能更為強(qiáng)大的數(shù)據(jù)訪問方式。因此,ADO.NET在軟件開發(fā)環(huán)境的發(fā)展中起到至關(guān)重要的作用和地位。

參考文獻(xiàn)

[1] 何玉潔.數(shù)據(jù)庫原理與應(yīng)用教程.機(jī)械工業(yè)出版社,2010(9).

[2] 韓小祥,劉志軍.C#程序設(shè)計(jì).北京科海電子出版社,2009(4).

猜你喜歡
數(shù)據(jù)源應(yīng)用程序編程
編程,是一種態(tài)度
元征X-431實(shí)測(cè):奔馳發(fā)動(dòng)機(jī)編程
編程小能手
紡織機(jī)上誕生的編程
刪除Win10中自帶的應(yīng)用程序
Web 大數(shù)據(jù)系統(tǒng)數(shù)據(jù)源選擇*
基于不同網(wǎng)絡(luò)數(shù)據(jù)源的期刊評(píng)價(jià)研究
基于真值發(fā)現(xiàn)的沖突數(shù)據(jù)源質(zhì)量評(píng)價(jià)算法
分布式異構(gòu)數(shù)據(jù)源標(biāo)準(zhǔn)化查詢?cè)O(shè)計(jì)與實(shí)現(xiàn)
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
四子王旗| 乌兰浩特市| 梅河口市| 岱山县| 哈尔滨市| 汽车| 昭平县| 台湾省| 方城县| 玉溪市| 三原县| 宣武区| 合肥市| 台江县| 临高县| 怀集县| 建始县| 泗水县| 淄博市| 徐州市| 丹凤县| 张掖市| 中山市| 姜堰市| 杭锦后旗| 深州市| 芒康县| 永修县| 新营市| 嘉善县| 昂仁县| 宁河县| 卢湾区| 北碚区| 偏关县| 资溪县| 瓮安县| 黄平县| 仙桃市| 云霄县| 江油市|