基于FireDAC開發(fā)DataSnap三層數(shù)據(jù)庫(kù)應(yīng)用_第1頁(yè)
基于FireDAC開發(fā)DataSnap三層數(shù)據(jù)庫(kù)應(yīng)用_第2頁(yè)
基于FireDAC開發(fā)DataSnap三層數(shù)據(jù)庫(kù)應(yīng)用_第3頁(yè)
基于FireDAC開發(fā)DataSnap三層數(shù)據(jù)庫(kù)應(yīng)用_第4頁(yè)
基于FireDAC開發(fā)DataSnap三層數(shù)據(jù)庫(kù)應(yīng)用_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、    基于firedac開發(fā)datasnap三層數(shù)據(jù)庫(kù)應(yīng)用    劉之燁雷聚超胡靜宜摘 要:服務(wù)器與數(shù)據(jù)庫(kù)之間的連接直接影響了datasnap三層數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的傳輸效率?,F(xiàn)階段主流的連接技術(shù)為ado與dbexpress。但是開發(fā)過(guò)程中存在著數(shù)據(jù)引擎兼容性不高、封裝繁瑣、連接邏輯復(fù)雜等問(wèn)題。因此提出使用firedac數(shù)據(jù)引擎開發(fā)datasnap三層c/s結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用。文章根據(jù)在delphi xe10平臺(tái)的開發(fā)過(guò)程得出firedac數(shù)據(jù)引擎具有連接邏輯簡(jiǎn)單,數(shù)據(jù)庫(kù)兼容性強(qiáng)等優(yōu)點(diǎn),更適合用于開發(fā)datasnap三層數(shù)據(jù)庫(kù)應(yīng)用。關(guān)鍵詞:firedac;

2、datasnap技術(shù);三層c/s結(jié)構(gòu):tp311 文獻(xiàn)標(biāo)志碼:a :2095-2945(2017)36-0120-02引言三層c/s結(jié)構(gòu)較于傳統(tǒng)的兩層c/s結(jié)構(gòu)具有更好穩(wěn)定性、安全性、易維護(hù)性,同時(shí)也具有更快的響應(yīng)速度等優(yōu)點(diǎn)。因此在開發(fā)大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的過(guò)程中,三層c/s結(jié)構(gòu)的應(yīng)用越來(lái)越普遍。delphi是一個(gè)功能強(qiáng)大,基于windows環(huán)境,面向?qū)ο蟮目梢暬瘧?yīng)用軟件開發(fā)工具。它結(jié)合了傳統(tǒng)的編程語(yǔ)言object pascal和數(shù)據(jù)庫(kù)語(yǔ)言的強(qiáng)大功能,既可以用于傳統(tǒng)算術(shù)編程又可以用于數(shù)據(jù)庫(kù)編程。delphi中的datasnap技術(shù)體系,提供了客戶端和應(yīng)用服務(wù)器之間傳遞數(shù)據(jù)庫(kù)信息的機(jī)制,同時(shí)豐富的

3、組件庫(kù)給程序的設(shè)計(jì)帶來(lái)極大的便利。delphi已經(jīng)成為當(dāng)前最流行的c/s開發(fā)工具之一。開發(fā)datasnap三層數(shù)據(jù)庫(kù)應(yīng)用的過(guò)程中,必須首先建立與數(shù)據(jù)庫(kù)之連接,它是應(yīng)用程序和后臺(tái)數(shù)據(jù)庫(kù)之間交換數(shù)據(jù)的前提。1 firedac基本原理firedac不使用iappserver接口,而是把datasnap服務(wù)器當(dāng)作api來(lái)呼叫??蛻舳耸褂胻fdconnection組件通過(guò)tcp/ip或http/https協(xié)議連接使用firedac開發(fā)的datasnap服務(wù)器,使用tfdstoredproc組件呼叫服務(wù)器api。如果客戶端呼叫的api需要回傳數(shù)據(jù),那么firedac會(huì)以stream的格式傳遞數(shù)據(jù),如果要對(duì)

4、數(shù)據(jù)進(jìn)行包含異動(dòng)的工作,那么可以搭配使用firedac的中央快儲(chǔ)功能來(lái)幫助程序員對(duì)數(shù)據(jù)進(jìn)行異動(dòng)。在datasnap架構(gòu)中要使用firedac的中央快儲(chǔ)功能,需要在應(yīng)用服務(wù)器使用tfdschemaadapter組件。而在firedac客戶端則需要使用tfdtableadapter組件把客戶端tfdmemtable罪案中的數(shù)據(jù)從應(yīng)用服務(wù)器取回或是從客戶端把異動(dòng)的數(shù)據(jù)更新回應(yīng)用層服務(wù)器。因此要使用firedac開發(fā)datasnap應(yīng)用,需要下列步驟:(1)開發(fā)使用firedac的datasnap服務(wù)器,并使用firedac中央快儲(chǔ)功能。(2)開發(fā)使用firedac的客戶端,使用tfdconnecti

5、on連接服務(wù)器。(3)使用tfdstoredproc組件呼叫服務(wù)器api。(4)處理數(shù)據(jù)流(stream data)。(5)使用tfdstoredproc組件呼叫服務(wù)器的api把異動(dòng)數(shù)據(jù)回傳給firedac的datasnap服務(wù)器,再由firedac的中央快儲(chǔ)功能把數(shù)據(jù)更新回?cái)?shù)據(jù)庫(kù)。2 三層數(shù)據(jù)庫(kù)應(yīng)用的實(shí)現(xiàn)過(guò)程2.1 創(chuàng)建數(shù)據(jù)庫(kù)(1)在mysql中創(chuàng)建名為xatu的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)中創(chuàng)建test表,增加兩列,列名分別為“xm”和“xh”并錄入信息作為查詢之用。(2)將mysql的動(dòng)態(tài)鏈接庫(kù)文件libmysql.dll存放到c:windowssystem32目錄下。2.2 創(chuàng)建datasnap服

6、務(wù)器(1)主菜單“file”->“new”->“other”在“new items”對(duì)話框中選擇datasnap server,啟動(dòng)向?qū)?。“project type”選擇“forms application”、 “application type”選擇“vcl application” 默認(rèn)tcp/ip為通訊協(xié)議,測(cè)試端口211,選擇tdatamodule 作為服務(wù)器端api類別。完成后,生成三個(gè)工程文件servercontainerunit1.pas、unit1.pas。servermethodsunitsunit1.pas存放網(wǎng)絡(luò)服務(wù)相關(guān)的控件,unit1.pas是服務(wù)器的主界

7、面,servercontainerunit1.pas是我們需要進(jìn)一步開發(fā)的工程文件。(2)打開servermethodsunitsunit1.pas,加入tfdschemaadapter、tfdquery、tfdstanstoragejsonlink等組件。tfdstanstoragebinlink和tfdstanstoragejsonlink的作用是讓firedac可以處理2進(jìn)制(tcp/ip)和json(http)格式的數(shù)據(jù)。(3)進(jìn)入code單元,在public下添加代碼“function get:tstream;”。添加的get方法可以讓客戶端查詢信息。firedac中要在客戶端和應(yīng)用

8、服務(wù)器之間傳遞數(shù)據(jù),只需要傳遞tstream形態(tài)的數(shù)據(jù)。get()方法首先建立一個(gè)tmemorystream對(duì)象,再開啟fdquery1組件取得數(shù)據(jù),然后把fdquery1組件中的數(shù)據(jù)對(duì)象通過(guò)tmemorystream類中的savetostream方法拷貝到tmemorystream對(duì)象中,最后把tmemorystream對(duì)象回傳給客戶端。(4)編譯運(yùn)行datasnap服務(wù)器。2.3 創(chuàng)建datasnap客戶端endprint(1)主菜單“file”->“new”->“muti-device application”,在窗體中添加tfdconnection、tfdguixwaitc

9、ursor、tfdphysdsdriverlink等組件。(2)在主界面的button1的onclick事件中呼叫g(shù)etxx()方法和showxx()方法。getxx方法獲取數(shù)據(jù),showxx()方法展示數(shù)據(jù)。getxx()方法只需要呼叫fdstoredproc1的execproc()方法,firedac就可以呼叫datasnap服務(wù)器中指定的服務(wù)方法(get),呼叫成功后datasnap服務(wù)器回傳的數(shù)據(jù)回存儲(chǔ)在fdstoredproc1的第一個(gè)參數(shù)中,型態(tài)是ftblob。創(chuàng)建一個(gè)tstringstream對(duì)象把fdstoredproc1的第一個(gè)參數(shù)內(nèi)容作為建構(gòu)元參數(shù),tstringstrea

10、m對(duì)象的內(nèi)容就是回傳的結(jié)果,把tstringstream對(duì)象包含的數(shù)據(jù)流位置設(shè)定到起始位置,再通過(guò)fdmemtable1組件的loadfromstream()方法從tstringstream對(duì)象中讀取數(shù)據(jù)流并還原。(3)編寫代碼并執(zhí)行客戶端,點(diǎn)擊button按鈕,數(shù)據(jù)庫(kù)中的信息已經(jīng)通過(guò)應(yīng)用層服務(wù)器傳輸?shù)娇蛻舳?,并展示在listview組件中。至此一個(gè)基于firedac的datasnap三層數(shù)據(jù)庫(kù)應(yīng)用已經(jīng)搭建完成,進(jìn)一步的開發(fā)除了需要根據(jù)用戶需求完善客戶端界面外,還需要根據(jù)需求編寫對(duì)應(yīng)的應(yīng)用層業(yè)務(wù)邏輯,完成相應(yīng)的功能。3 結(jié)束語(yǔ)根據(jù)以上開發(fā)過(guò)程可以得出firedac有以下優(yōu)點(diǎn):(1)跨數(shù)據(jù)庫(kù)平臺(tái)

11、。firedac作為一個(gè)通用數(shù)據(jù)訪問(wèn)庫(kù),用于開發(fā)與企業(yè)數(shù)據(jù)庫(kù)連接的多個(gè)設(shè)備的應(yīng)用程序。通過(guò)其強(qiáng)大的通用架構(gòu),firedac可實(shí)現(xiàn)從delphi到interbase,sqlite的本機(jī)高速直接訪問(wèn)。(2)訪問(wèn)快速。firedac數(shù)據(jù)集建立在強(qiáng)大的數(shù)據(jù)訪問(wèn)引擎之上。這種輕便,有效和靈活的引擎可以直接在應(yīng)用程序中使用,并且是數(shù)據(jù)集api的強(qiáng)大基礎(chǔ)。(3)良好的兼容性。firedac可以使用tdataset后代類,包括tfdquery,tfdmemtable,tfdstoredproc和tfdtable。同時(shí)數(shù)據(jù)集類與原始bde數(shù)據(jù)集和clientdataset高度兼容。firedac技術(shù)和datasnap技術(shù)相結(jié)合,為三層數(shù)據(jù)庫(kù)應(yīng)用的開發(fā)提供了良好的支持,為構(gòu)建滿足不同需求的多層c/s體系的數(shù)據(jù)庫(kù)應(yīng)用程序打下了良好基礎(chǔ)。定會(huì)成為日后

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論