第二十五章_C_Builder__應(yīng)用Internet_Express的程式開發(fā)_第1頁
第二十五章_C_Builder__應(yīng)用Internet_Express的程式開發(fā)_第2頁
第二十五章_C_Builder__應(yīng)用Internet_Express的程式開發(fā)_第3頁
第二十五章_C_Builder__應(yīng)用Internet_Express的程式開發(fā)_第4頁
第二十五章_C_Builder__應(yīng)用Internet_Express的程式開發(fā)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第二十五章 應(yīng)用Internet Express的程序開發(fā)我們可以輕易的使用Web接口,在客戶端來取得服務(wù)器里數(shù)據(jù)庫的信息,讓這些信息顯示在網(wǎng)頁上面。但是如果想要將服務(wù)器數(shù)據(jù)庫的數(shù)據(jù)先搬動(dòng)到客戶端,然后在客戶端進(jìn)行數(shù)據(jù)庫的修改存取,接著再搬回服務(wù)器呢?感覺就復(fù)雜多了,而這就是本章所要介紹的InternetExpress所帶給我們強(qiáng)大神奇的功能。 大綱 25-1 InternetExpress導(dǎo)論 25-2 實(shí)作范例說明 25-3 建置多層存取架構(gòu) 25-4 整合數(shù)據(jù)查詢 本章習(xí)題25-1 InternetExpress導(dǎo)論 不同于一般Two-Tier的架構(gòu),InternetExpress提供了

2、另外一種的數(shù)據(jù)庫存取方式。應(yīng)用程序取得數(shù)據(jù)庫服務(wù)器的數(shù)據(jù),經(jīng)由InternetExpress所提供的服務(wù),將取得的數(shù)據(jù)轉(zhuǎn)換成XML格式的網(wǎng)頁,然后再傳送給客戶端去瀏覽這個(gè)網(wǎng)頁,并且提供了可以編輯的接口。對于使用者而言,他只需要去編輯者個(gè)網(wǎng)頁接口的內(nèi)容,這個(gè)編輯完的內(nèi)容將會被利用JavaScript以更新的方式將被修改過的數(shù)據(jù)再寫回?cái)?shù)據(jù)庫。 所以說,等于是客戶端把數(shù)據(jù)庫數(shù)據(jù)般出來,改一改,再全部搬回去。這大概就是InternetExpress的精神所在了。C+ Builder開發(fā)環(huán)境下,在Internet Express這個(gè)組件面版分類里有兩個(gè)組件,分別為:XMLBroker和InetXPage

3、Producer。 InternetExpress和一般數(shù)據(jù)庫動(dòng)作的差異一般Two-Tier架構(gòu)下,客戶端進(jìn)行五個(gè)updata更新動(dòng)作的示意圖。 在InternetExpress概念下,進(jìn)行五個(gè)update更新動(dòng)作的示意圖。 用戶端取得數(shù)據(jù)集 用戶端編輯取回的數(shù)據(jù)集 用戶端回存數(shù)據(jù)集到數(shù)據(jù)庫服務(wù)器25.1.1客戶端取得數(shù)據(jù)集由于現(xiàn)在我們在客戶端所要使用的瀏覽工具,就是一般的網(wǎng)頁瀏覽器;對于網(wǎng)頁瀏覽器而言,根本不可能辨識ClientDataSet組件所提供的數(shù)據(jù),所以我們可以知道,如果要使用這種方式來存取數(shù)據(jù)庫,一般的C+Builder所提供的方式是行不通的。所以這個(gè)時(shí)候,XMLBroker的出

4、現(xiàn)就是為了要面對這個(gè)問題,這也是InternetExpress作為信息傳遞最重要的概念。 XMLBroker所要處理的事情,跟ClientDataSet的作用是很類似的。由于現(xiàn)在客戶端所使用的應(yīng)用程序是網(wǎng)頁的瀏覽器,所以最便利的數(shù)據(jù)結(jié)構(gòu)的格式就是把所有的取得信息轉(zhuǎn)換成為XML的格式。于是在把數(shù)據(jù)傳給客戶端之前,必須要先做轉(zhuǎn)換的動(dòng)作,而這個(gè)動(dòng)作就是由XMLBroker組件所負(fù)責(zé)的。 在internetExpress架構(gòu)下,可以是兩層(Two-Tier)的或是多層(Multi-Tier)的存取結(jié)構(gòu)。在兩層結(jié)構(gòu)下,數(shù)據(jù)存取組件、數(shù)據(jù)提供者、和XMLBroker組件都和WEB應(yīng)用程序放在一起;而多層的

5、存取架構(gòu)下,數(shù)據(jù)存取組件、數(shù)據(jù)集提供者則是放到應(yīng)用程序服務(wù)器里,而在Web應(yīng)用程序這邊,則包含了XMLBroker和DataSnap這兩個(gè)組件。 25.1.1客戶端取得數(shù)據(jù)集 XMLBroker組件主要用于處理兩件事 從資料提供者或應(yīng)用程序服務(wù)器那邊取得數(shù)據(jù)庫的數(shù)據(jù),并且在取得這些數(shù)據(jù)以后加以處理成為XML格式的數(shù)據(jù)結(jié)構(gòu) 當(dāng)用戶端使用瀏覽器將這些XML格式的數(shù)據(jù)做完更新以后,XMLBroker必須負(fù)責(zé)接收這些被更新的數(shù)據(jù)然后再傳給數(shù)據(jù)庫系統(tǒng)去做相對應(yīng)的處理 XMLBroker的重要屬性屬性名稱 說明 RemoteServer 指定建立連線到應(yīng)用程式伺服器的元件名稱,這是在Multi-Tier多

6、層架構(gòu)下才需要指定的,一般兩層架構(gòu)可以忽略。 ProviderName 指定資料集提供者,對於兩層式架構(gòu),可以直接從這個(gè)屬性選取資料集提供者,若是多層式的存取架構(gòu),則需要經(jīng)由RemoteServer屬性指定應(yīng)用程式伺服器了以後,才可以用選取的方式指定這個(gè)屬性。 MaxRecords 每次轉(zhuǎn)換的資料最多可以有多少筆,這可以避免過多的資料集一次傳給用戶端,這樣對於用戶端和網(wǎng)路頻寬都會造成很大的負(fù)擔(dān)。但是如果我們是針對小型的資料庫的話,就可以把這個(gè)值設(shè)定成為-1,這樣一次就會把伺服器所有的資料集一口氣傳給用戶端。 Params 當(dāng)資料集透過動(dòng)態(tài)查詢或呼叫預(yù)存程序取得時(shí),可以使用這個(gè)屬性來指定條件參數(shù)

7、值 XMLBroker的重要事件事件名稱 說明 AfterDispatch 當(dāng)XMLBroker處理完請求的對應(yīng)動(dòng)作時(shí),此事件就會發(fā)生。 BeforeDispatch 元件收到資料更新的請求,這個(gè)事件就會發(fā)生,藉由這個(gè)事件的發(fā)生,來處理請求的對應(yīng)動(dòng)作。 OnGetErrorResponse 當(dāng)資料的更新動(dòng)作發(fā)生錯(cuò)誤的回應(yīng),此時(shí)此件事就會發(fā)生。 OnGetResponse 當(dāng)此事件發(fā)生時(shí),表示資料順利的被更新了。 OnRequestRecords 當(dāng)XMLBroker需要從資料提供者端取得新的資料時(shí),此事件就會發(fā)生。 OnRequestUpdate 正在執(zhí)行資料更新的時(shí)候,這個(gè)事件就會發(fā)生。 2

8、5.1.2 客戶端編輯取回的數(shù)據(jù)集InternetExpress分類里的另外一個(gè)組件InetXPageProducer了,此組件可以建立網(wǎng)頁畫面,利用這個(gè)組件,程序設(shè)計(jì)師可以鏈接到XMLBroker組件來取得數(shù)據(jù)集,然后藉由這些取得的數(shù)據(jù)集來產(chǎn)生相對應(yīng)的編輯字段。 要產(chǎn)生的網(wǎng)頁接口是由InetXPageProducer組件負(fù)責(zé)的,當(dāng)我們要設(shè)定網(wǎng)頁內(nèi)容的樣板格式時(shí),就去設(shè)定該組件里的HTMLDoc屬性,也就是說,我們可以先在HTMLDoc屬性里指訂網(wǎng)頁的基本外觀和格式,如背景,插圖,或是題字等等(右圖為編輯畫面)。 25.1.2 客戶端編輯取回的數(shù)據(jù)集除此之外,InetXPageProducer

9、也提供了一個(gè)類似于FrontPage的編輯網(wǎng)頁接口Web Page Editor,在InetXPageProduce組件上面按下鼠標(biāo)右鍵就可以點(diǎn)選開啟了,其畫面有分兩個(gè)部分:HTML就是顯示HTML原始碼的畫面,Brower就是顯示瀏覽器處理這些HTML碼的時(shí)候,所會顯示的畫面,如右圖25.1.3客戶端回存數(shù)據(jù)集到數(shù)據(jù)庫服務(wù)器 當(dāng)使用者編輯完了這些來自XML格式的網(wǎng)頁以后,將要回傳給數(shù)據(jù)庫服務(wù)器做更新,在InetnetExpress里,是利用JavaScript語言來整合網(wǎng)頁數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù),加上一些附加的功能。所以說,真正處理數(shù)據(jù)的是交給JavaScript語言來處理,而程序設(shè)計(jì)師并不需要真

10、的會編輯JavaScript語言,因?yàn)檫@都是要交給C+Builder來做的。最后透過JavaScript就可以把更新的數(shù)據(jù)套到數(shù)據(jù)庫的數(shù)據(jù),最后再統(tǒng)一格式送回給服務(wù)器。25-2 實(shí)作范例說明本范例里所使用的數(shù)據(jù)庫系統(tǒng)為MircoSoft Access,運(yùn)用的數(shù)據(jù)庫存取組件為ADO系列組件。一開始先在Access環(huán)境里編輯好一個(gè)簡單的通訊簿,如圖,名為AddressBook。這個(gè)數(shù)據(jù)表里面有五筆數(shù)據(jù),紀(jì)錄了簡單的個(gè)人信息。 實(shí)作范例說明-1 但是在我們開始使用C+Builder開發(fā)之前,要先把網(wǎng)絡(luò)服務(wù)器的環(huán)境設(shè)定好。由于InternetExpress技術(shù)是透過JavaScript來進(jìn)行數(shù)據(jù)處理的

11、動(dòng)作,而這些JavaScript原始碼,都可以由InetXPageProducer來自動(dòng)產(chǎn)生,而這些自動(dòng)產(chǎn)生出來的原始碼將會呼叫一些C+Builder所提供的函式庫,所以我們必須要把這些函式庫放到IIS的有效目錄內(nèi)。 這些函式庫是放在C+Builder安裝好的目錄下的SourceWebMidas子目錄內(nèi),我們可以把這個(gè)目錄的內(nèi)容都搬到IIS的根目錄下。 本范例環(huán)境設(shè)定如下: IIS的根目錄為C:wwwroot C+Builder的安裝目錄為E:CBuilder6 實(shí)作范例說明-2 除了可以把E:CBuilder6SourceWebMidas下的檔案都搬到C:wwwroot下的某個(gè)子目錄以外,我

12、們也可以有以個(gè)比較技巧的做法, 只需要在IIS設(shè)定里,設(shè)定一個(gè)虛擬目錄到E:CBuilder6SourceWebMidas就可以了。 因?yàn)镮nternetExpress服務(wù)是使用CGI的格式由服務(wù)器發(fā)送信息給客戶端,所以接下來就是要修改IIS的設(shè)定,使其可以執(zhí)行CGI程序,進(jìn)入默認(rèn)網(wǎng)址的內(nèi)容選單 將根目錄權(quán)限的Script Acess選項(xiàng)勾選,并且在執(zhí)行權(quán)限的下拉選單選擇也可以執(zhí)行執(zhí)行檔。 實(shí)作范例說明-3 接著我們就可以開始項(xiàng)目開發(fā)的動(dòng)作在C+Builder環(huán)境下,新增一個(gè)項(xiàng)目。專案的類型為Web Server Application,型態(tài)為CGI Stand Alone Executabl

13、e,我們將會有一個(gè)空白的項(xiàng)目。接著開始要加入組件了,首先我們需要使用ADO組件來鏈接Access的mdb檔案數(shù)據(jù)庫,所以我們需要組件ADOConnection和ADOTable。在ADOConnection的ConnectionString屬性里鏈接到mdb檔案 當(dāng)資料庫檔案連結(jié)成功,設(shè)定ADOTable的組件里的Connection屬性為ADOConnection1。然后把TableName屬性指定為AddressBook,并且之后把Active屬性設(shè)定為True。 把Data Access分類標(biāo)簽里的DataSetProvider組件拉進(jìn)項(xiàng)目里。然后把DataSet屬性設(shè)定成ADOTabl

14、e1。 把XMLBroker的ProviderName設(shè)定為DataSetProvider1了,別忘了這時(shí)要把Connected屬性改成True。 實(shí)作范例說明-4下一步,就是要開始建構(gòu)處理完的數(shù)據(jù)所要顯示的網(wǎng)頁接口,也就是InetXPageProducer組件此時(shí)要拉進(jìn)項(xiàng)目的時(shí)候了。在 InetXPageProducer組件圖標(biāo)上面按下右鍵,點(diǎn)選Web Page Editor就可以開啟編輯選單,如圖。在左邊的分頁里按下鼠標(biāo)右鍵,點(diǎn)選New Component,選取DataForm選項(xiàng)。接著點(diǎn)選左邊分頁里新出現(xiàn)的DataForm1再按下選單里的NewItem選項(xiàng)(選單圖示的第一項(xiàng))。然后按下C

15、trl鍵點(diǎn)選DataNavigator和FieldGroup,新增這兩個(gè)選項(xiàng)。 實(shí)作范例說明-5在FieldGroup1的屬性XMLBroker里設(shè)定成XMLBroker1,而DataNavigator1的XMLComponent屬性設(shè)定成FieldGroup1。 實(shí)作范例說明-6 接下來在InetXPageProducer1的IncludePathURL屬性,要設(shè)定函式庫目錄,也就是我們剛剛所設(shè)定的虛擬目錄WebMidas。如: http:/localhost/WebMidas 這個(gè)設(shè)定是給客戶端瀏覽器看的,也就是說如果設(shè)定如上是localhost的話,那么只有服務(wù)器本身的瀏覽器可以開啟,其

16、他計(jì)算機(jī)的瀏覽器將無法找到,所以這里如果是真的要透過網(wǎng)絡(luò)來提供InternetExpress服務(wù)的話,就要設(shè)定實(shí)體位置。 實(shí)作范例說明-7InternetExpress的架構(gòu)已經(jīng)完成了,現(xiàn)在要做的就是修飾的部分 在Web Page Editor的左上框里,將鼠標(biāo)移到DataNavigator1上面,再按下右鍵選取New Component就可以選擇各式各樣的功能鈕的功能,如刪除,下一筆數(shù)據(jù),更新.等等。 把這些功能都選取然后新增,然后在Web Page Editor的下面框就可以點(diǎn)選按鈕,修改其屬性。如筆者如果修改了Apply Updatas按鈕的Caption屬性成為更新數(shù)據(jù)庫,結(jié)果如下圖:

17、 實(shí)作范例說明-8最后,就是要測試cgi程序是否能夠順利執(zhí)行。在Project選單里Build好這個(gè)項(xiàng)目,然后把產(chǎn)生的執(zhí)行檔案放到IIS的根目錄范圍下。如將執(zhí)行檔ch26_001.exe放到C:wwwroottemp子目錄中。然后到另外一臺有網(wǎng)絡(luò)的計(jì)算機(jī)上面使用瀏覽器開啟這個(gè)執(zhí)行檔 ,如果成功,如圖的畫面就會出現(xiàn)了。25-3 建置多層存取架構(gòu) 在比較大型的數(shù)據(jù)庫網(wǎng)絡(luò)系統(tǒng)下面,我們會希望把服務(wù)器端分開來,一是應(yīng)用程序服務(wù)器提供數(shù)據(jù)庫模塊,另一是單純的Web應(yīng)用程序服務(wù)器用來放置InternetExpress的執(zhí)行程序。 這個(gè)Web應(yīng)用程序服務(wù)器可以利用DataSnap的組件來和數(shù)據(jù)庫取得聯(lián)機(jī)。這

18、樣子的架構(gòu),就可以把數(shù)據(jù)庫和網(wǎng)頁處理的動(dòng)作分開到兩臺不同的機(jī)器了。 多層存取架構(gòu)范例 本范例使用Access的mdb檔案作為數(shù)據(jù)庫,需要建立兩個(gè)BCB的專案:一是應(yīng)用程序服務(wù)器,用來鏈接數(shù)據(jù)庫并且把數(shù)據(jù)庫的信息提供給InternetExpress項(xiàng)目作為數(shù)據(jù)源另一個(gè)項(xiàng)目就是InternetExpress的項(xiàng)目,使用CGI的格式,讓客戶端使用瀏覽器來開啟。 多層存取架構(gòu)范例- 應(yīng)用程序服務(wù)器的建立 1首先建立一個(gè)example.mdb的范例數(shù)據(jù)庫,數(shù)據(jù)庫里面有一個(gè)Person數(shù)據(jù)表,是個(gè)簡單的個(gè)人資料記錄,如下圖: 多層存取架構(gòu)范例- 應(yīng)用程序服務(wù)器的建立 2有了這個(gè)數(shù)據(jù)表以后,我們就開始建立B

19、CB的專案了。首先我們可以先建立一個(gè)普通的Application專案,在Form1里隨意編輯一個(gè)簡單的畫面,如下圖。 多層存取架構(gòu)范例- 應(yīng)用程序服務(wù)器的建立 3 接下來就要開始重要的步驟了,我們在這個(gè)項(xiàng)目里加入一個(gè)Remote Data Module模塊,從工具欄的File里的New選項(xiàng),選擇Other分類,然后再M(fèi)ultitier頁簽里可以找到這個(gè)模塊,這里我們會被要求輸入這個(gè)模塊對象的命名,筆者命名為RDMObj25_2。而這個(gè)項(xiàng)目就是要利用這個(gè)模塊來提供給InternetExpress項(xiàng)目數(shù)據(jù)庫資源。 后我們就可以在這個(gè)模塊上,加入鏈接數(shù)據(jù)庫必要的組件,首先我們先加入ADOConnec

20、tion組件,在組件功能列的ADO頁簽里。加入后在組件圖標(biāo)上用鼠標(biāo)點(diǎn)選兩次,開啟數(shù)據(jù)庫鏈接的對話框。 多層存取架構(gòu)范例- 應(yīng)用程序服務(wù)器的建立 4選擇Jet 4.0 OLE DB Provider來連結(jié)mdb數(shù)據(jù)庫 指定mdb檔案的路徑和檔案 多層存取架構(gòu)范例- 應(yīng)用程序服務(wù)器的建立 5現(xiàn)在我們鏈接好數(shù)據(jù)庫了,下一步就是拉入ADO頁簽里的ADOQuery組件,組件的Connection屬性當(dāng)然就是指定為ADOConnection1。 編輯SQL屬性,這個(gè)屬性里我們輸入SQL的語法,告訴ADOQuery組件我們需要的數(shù)據(jù)表和數(shù)據(jù)字段。 如圖顯示然后把Active屬性改成true,這樣查詢數(shù)據(jù)表的

21、動(dòng)作就告一段落。最后一個(gè)我們需要的組件,就是Data Access頁簽的DataSetProvider組件了,將這個(gè)組件拉進(jìn)項(xiàng)目里,然后把其中的DataSet屬性設(shè)定為 ADOQuery,如此就完成了應(yīng)用程序服務(wù)器的所有動(dòng)作了。 多層存取架構(gòu)范例- InternetExpress服務(wù)器建立 1 現(xiàn)在我們有了應(yīng)用程序服務(wù)器提供數(shù)據(jù)庫服務(wù),就欠一個(gè)WEB服務(wù)器來提供CGI服務(wù)了,在這里我們必須要在另外開啟一個(gè)新的項(xiàng)目。這個(gè)項(xiàng)目的型態(tài)和上一節(jié)所介紹的相同,就是Web Server Application分類里的CGI Stand-alone executable型態(tài)項(xiàng)目。 開啟好了新項(xiàng)目后,首先要做

22、的就是跟剛剛完成的數(shù)據(jù)庫服務(wù)器鏈接,這個(gè)時(shí)候就需要DataSnap頁簽里的DCOMConnection組件了,當(dāng)然我們也需要加入InternetExpress頁簽下的XMLBroker和InetXPageProducer兩個(gè)組件。 多層存取架構(gòu)范例- InternetExpress服務(wù)器建立 2在DCOMConnection組件里有一個(gè)屬性:ComputerName,這是用來指定網(wǎng)絡(luò)上的計(jì)算機(jī)哪一臺是應(yīng)用程序服務(wù)器,如果是在同一個(gè)網(wǎng)域下的話,可以直接指定該計(jì)算機(jī)在網(wǎng)絡(luò)上的名稱,或者我們也可以直接指定IP 當(dāng)這個(gè)指定動(dòng)作無誤以后,在ServerName屬性,就能看到RDMObj25_2這個(gè)選項(xiàng)了

23、,我們就指定這個(gè)選項(xiàng)。 把Connected選項(xiàng)設(shè)定成True了,這個(gè)時(shí)候本項(xiàng)目就會去做鏈接應(yīng)用程序服務(wù)器的動(dòng)作了,如果連結(jié)成功,那么在應(yīng)用程序服務(wù)器的主窗體畫面就會出現(xiàn) 多層存取架構(gòu)范例- InternetExpress服務(wù)器建立 3在XMLBorker1組件的RemoteServer屬性,選定為DCOMConnection1,然后在ProviderName屬性設(shè)定成DataSetProvider1,這個(gè)DataSetProvider1組件就是應(yīng)用程序服務(wù)器的組件。然后將Connected屬性設(shè)定成true 開始設(shè)定InetXPageProducer組件選擇選單上的Web Page Edit

24、or,然后加入一個(gè)DataForm,并在此DataForm1里再加入DataNavigator和DataGrid組件,把DataGrid的XMLBroker屬性選擇XMLBroker1,DataNavigator的XMLComponent屬性指定為DataGrid1把這兩個(gè)組件的Field都加入到項(xiàng)目里以方便修改 多層存取架構(gòu)范例- InternetExpress服務(wù)器建立 4最后一個(gè)步驟,就是在工具欄的Add New里,新增一個(gè)WebActionItem組件,把該組件的default屬性設(shè)定成true,并且把Producer屬性設(shè)定成InetXPageProducer1組件。 把Build好

25、的執(zhí)行檔放到IIS的有效目錄范圍內(nèi)。我們可以開始利用客戶端瀏覽器來觀看CGI執(zhí)行的結(jié)果。 25-4 整合數(shù)據(jù)查詢 在數(shù)據(jù)庫里面,某些重要字段是可以有關(guān)聯(lián)的(relation),這先關(guān)聯(lián)可以透過關(guān)鍵值(Key)來做連結(jié)。 這樣的連結(jié)和讀取的動(dòng)作,可能會取出大量的數(shù)據(jù)庫數(shù)據(jù)造成讀取的負(fù)載提高 本節(jié)我們將要介紹,如何使用InternetExpress的架構(gòu)來一次讀取不同的數(shù)據(jù)表單。 整合數(shù)據(jù)查詢范例本節(jié)的范例先利用Access建立一個(gè)范例數(shù)據(jù)庫db1.mbd。這個(gè)數(shù)據(jù)庫里將會有兩個(gè)數(shù)據(jù)表,一個(gè)是紀(jì)錄學(xué)生的基本數(shù)據(jù)Personal數(shù)據(jù)表,另外一個(gè)是學(xué)生的學(xué)期成績Grade數(shù)據(jù)表 所以我們現(xiàn)在有兩個(gè)數(shù)據(jù)

26、表,這兩個(gè)數(shù)據(jù)表里面共同擁有有具有單一性質(zhì)的字段就是姓名(Name)和學(xué)號(sn),由于名字有可能再以后數(shù)據(jù)庫擴(kuò)大的時(shí)候出現(xiàn)重復(fù)的情形,所以在此筆者選擇用學(xué)號來當(dāng)做關(guān)鍵值。而建立關(guān)聯(lián)的動(dòng)作,雖然Access本身也有提供,但我們留在BCB再作動(dòng)作。 整合數(shù)據(jù)查詢范例-應(yīng)用程序服務(wù)器的建立 1本節(jié)的范例將會和前一節(jié)一樣,建立的是多層的存取架構(gòu),但是加入多窗體整合的實(shí)作。 首先要做的就是先建立應(yīng)用程序服務(wù)器,做法和前一節(jié)的一樣,我們可以先新開一個(gè)普通的項(xiàng)目,然后加入一個(gè)Remote Data Module,命名為RDMObj25_3。然后加入ADOConnection組件用來鏈接數(shù)據(jù)庫。到這里為止,

27、動(dòng)作都和上一節(jié)的范例是相同的。加入ADO頁簽里面的ADODataSet組件兩個(gè)到項(xiàng)目里,每一個(gè)個(gè)別負(fù)責(zé)一個(gè)數(shù)據(jù)表的資料。所以這兩個(gè)組件的Connection屬性都設(shè)定成ADOConnection1。 因?yàn)橛袃蓚€(gè)數(shù)據(jù)表,一個(gè)是Personal,一個(gè)是Grade,在此讓ADODataSet1組件負(fù)責(zé)Personal數(shù)據(jù)表,而ADODataSet2組件負(fù)責(zé)Grade數(shù)據(jù)表。 整合數(shù)據(jù)查詢范例-應(yīng)用程序服務(wù)器的建立 2在ADODataSet1的CommandText屬性,在編輯框里寫入: Select * From Personal另外在ADODataSet2的CommandText屬性寫入: Sel

28、ect * From Grade如此一來ADODataSet1將會透過ADOConnection1鏈接到數(shù)據(jù)庫并取出數(shù)據(jù)表Personl的所有字段,而ADODataSet2也同理取出Grade的所有字段了。把DataAccess頁簽里的DataSource組件加入項(xiàng)目里,我們需要這個(gè)組件來做數(shù)據(jù)表結(jié)合的動(dòng)作(Join)。將DataSource的組件的DataSet屬性指向ADODataSet1,然后再把ADODataSet2的DataSource屬性指定成DataSource1,如此一來,我們就可以以ADODataSet1組件所處理的Personal數(shù)據(jù)表為基準(zhǔn),加入ADODataSet2組件

29、所負(fù)責(zé)的Grade數(shù)據(jù)表的資料了。 整合數(shù)據(jù)查詢范例-應(yīng)用程序服務(wù)器的建立 3在ADODataSet2的MasterFields屬性開啟編輯窗,我們就可以看到如圖的畫面了,左邊為Detail Fields右邊為Master Fields,所謂的Master Fields就是主要的字段,在這里就是ADODataSet1所負(fù)責(zé)的Personal數(shù)據(jù)表的資料,而Detail Fields就是透過連結(jié)加入進(jìn)來的字段,就是ADODataSet2所負(fù)責(zé)的Grade數(shù)據(jù)表。 在MasterFields里選擇sn,在Detail Fields里也選擇sn,然后按下Add,那么Joined Fields里就會加

30、入sn這個(gè)關(guān)鍵值連結(jié)關(guān)系了。 整合數(shù)據(jù)查詢范例-應(yīng)用程序服務(wù)器的建立 4 完成了與數(shù)據(jù)庫的動(dòng)作,我們需要把這些數(shù)據(jù)庫的信息提供出去,就又需要加入DataAccess頁簽的DataSetProvider組件了。在DataSetProvider1組件的DataSet屬性,指定為ADODataSet1(非ADODataSet2,因?yàn)锳DODataSet1負(fù)責(zé)的才是Master Fields)。 應(yīng)用程序服務(wù)器已經(jīng)完成了,接下來就是建立InternetExpress服務(wù)器。 整合數(shù)據(jù)查詢范例-InternetExpress服務(wù)器的建立 1 在這里,我們所要建立的InternetExpress服務(wù)器,和上一節(jié)所要建立的很相似 ,需要加入的組件依然是以下三個(gè) :DCOMConnection,XMLBroker,InetXPageProducer DCOMConnection1組件的Computer Name屬性指定剛剛才完成的應(yīng)用程序服務(wù)器的網(wǎng)絡(luò)名稱或網(wǎng)絡(luò)位置,然后ServerName就設(shè)定為RDMObj25_3 (可用選的)。將XMLBroker組件的RemoteServer屬性指向DCOMConnection1組

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論