版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 基于數(shù)據(jù)庫訪問技術(shù)的研究與實現(xiàn) 徐祥濤摘要: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概述a
2、do.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ū)分為:&quo
3、t;數(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)行操作,首先是與
4、數(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ù)庫為例,首先建立一個
5、名為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í)行命令操作,如
6、進(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
7、= 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ù)訪問(如dat
8、aset 對象)。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 只提供給datarea
9、der 使用, 必須等到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(dr0.tost
10、ring();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
11、sdap.fill(ds, "student");page.response.write(""); /5 顯示其中的datatable對象中的數(shù)據(jù)for (int i = 0; i < ds.tables0.rows.count; i+)page.response.write("");for (int j = 0; j < ds.tables0.columns.count; j+)page.response.write("" + ds.tables0.rowsi.itemarrayj + "&
12、quot;);page.response.write("");page.response.write("");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著
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)保潔服務(wù)定制協(xié)議范本(2024版)版B版
- 2024年規(guī)范版回遷房屋交易協(xié)議版
- 2024年短期融資過橋擔(dān)保合同版B版
- 萬達(dá)商業(yè)廣場2024年物業(yè)運營管理合同版
- 2025年度大棚建筑智能監(jiān)控系統(tǒng)開發(fā)與應(yīng)用合同3篇
- 專業(yè)定制股東合作框架合同(2024年版)一
- 長春醫(yī)學(xué)高等??茖W(xué)校《資本運營與公司治理》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年甲方與乙方設(shè)備租賃合同
- 服裝行業(yè)顧問工作總結(jié)
- 2024最簡單的汽油購銷合同范本
- 污廢水處理設(shè)施運行管理課件
- 業(yè)務(wù)下單流程標(biāo)準(zhǔn)規(guī)范
- “家園”協(xié)力小班幼兒勞動教育的實踐研究 論文
- 集料摻配比例自動計算系統(tǒng)L1.0(試算法)
- 糖尿病專科質(zhì)控檢查表
- 科學(xué)版二年級《游戲迎面接力跑》評課稿
- 信訪事項復(fù)查申請書
- 巡檢記錄表巡檢記錄表
- 小學(xué)生家長教育焦慮調(diào)查問卷
- 施工方案水泥廠(總)
- 客服年終總結(jié)不足之處及改進(jìn)計劃(五篇)
評論
0/150
提交評論