我是一位delphi的初学者,请各位详细介绍一下三层数据库的开发过程(50分)

  • 主题发起人 主题发起人 ART
  • 开始时间 开始时间
有一本書﹐李維的三層架構﹐我想你看了一定有益處。
 
首先建立一个应用程序服务器端,主要就是建立一个远程数据模块,需要一个query 控件,
该控件在data access页上,这一控件与数据库相连,需另一个控件DatatsetProvider(在midas页上).
这一控件与query控件相连.至此远程数据模块建立.远程数据模块建立成功后,运行应用程序服务器端,
注册远程数据模块.类似于注册一个Active X控件.
其次建立一个应用程序客户端.首先建立一个客户端数据模块.需要控件至少三个.一个dcomconnection控件,(再midas页)这一控件
与远程数据模块的datasetprovider相连,其中必须将注册的应用程序服务器端的注册名称填入相应的appserver属性,另一控件clientdataset,这一控件与dcomconnection
控件相连.最后一个控件datasource,这一控件与clientdataset相连.然后,就可以建立你自己的应用程序.
如果还有声莫不明白,可以看李维的书,<<delphi 5.x 分布式多层应用系统篇>>,机械工业出版社出版的.

 
三层并不是把TTable换成TClientDataSet就行的,
学问太多了
 
不好意思,书名敲错了,想补充一下:<Delphi 5.x 分布式多层应用 系统篇>
 
以下為我看李維的<<實戰Delphi4.x>>所做的筆記,希望對你有幫助!
但你要知道多層資料庫應用系統是有很多要學的,以下只是最簡單的一個Demo罷了!
要開發多層應用系統,程式師必須遵照下面的開發步驟:
1. 開發遠端伺服器
2. 開發用戶端使用者介面應用程式
3. 連結用戶端應用程式和遠端伺服器
5-4-1撰寫多層應用系統
Delphi4提供的建立遠端應用程式伺服器的能力必須是一個EXE型態的伺服器,
這是和使用MTS建立的應用程式伺服器不一樣的.
下面是開發伺服端應用程式的步驟:
1. 建立應用程式
2. 建立遠端資料模組
3. 使用資料集元件連結遠端資料庫
4. 使用Provider元件
5. 輸出Provider元件介面讓用戶端應用程式存取
6. 注冊伺服器應用程式(如果使用DCOM通訊協定的話)
&amp;#61608;
建立應用程式:由於Delphi4的伺服端應用程式必須是一個執行在WinNT
的EXE應用程式;所以程式師在開發伺服端應用程式時,
必須先建立一個Delphi應用程式.〔File|New Application〕
&amp;#61608;
建立遠端資料模組:使用Delphi開發多層應用系統時,最重要的工作是
撰寫應用程式伺服器.因為應用程式伺服器提供了用戶端應用程式存取
遠端資料庫的介面,也可以讓程式師撰寫應用邏輯元件在應用程式伺服器
讓所有的用戶端應用程式呼叫使用.
Delphi使用分散式VCL元件建立的應用程式伺服器基本上是一個
OLE Automation Server,用戶端應用程式可以透過DCOM直接和應用程式伺服器溝通,
或是使用TCP/IP,OLE Enterprise和應用程式伺服器溝通.Delphi建立的應用程式伺服器
會輸出Iprovider介面讓用戶端應用程式呼叫,以便存取遠端資料庫.
此外應用程式伺服器也可以加入自訂介面以提供用戶端額外的服務,
或是再撰寫其他的應用邏輯物件.
〔File|New,在New Items對話盒中選Multitier頁中的Remote Data Module;
彈出Remote Data Module Wizard對話盒,詢問你應用程式伺服器的類別名稱,
應用程式伺服器產生的樣例特性及應用程式伺服器使用的執行緒模型;
輸入後(如:EasyDCOMServer),點選OK按鈕,
產生一個空白的遠端資料模組及實作這個遠端資料模組的程式單元;
現在,程式師可以在這個資料模組中加和任何非視覺化的VCL元件,
如Tdatabase,Tquery等〕
&amp;#61608;
使用資料集元件連結到遠端資料庫:要讓用戶端能名藉由應用程式伺服器存取
遠端資料,首先應用程式伺服器必須先連結到遠端資料庫,然後再讓用戶端應用程式
連結應用程式伺服器存取這些資料.應用程式伺服器可以在遠端資料模組中
使用Delphi的資料集元件存取遠端資料庫,再把這些資料集元件取得的資料藉由
稍後介紹的Provider元件輸出,讓用戶端應用程式能夠藉由Provider元件取得資料.
1. 置入一個Tdatabase元件,設AliasName為DBDEMOS,設HandleShared為True,
設DatabaseName為aEasyDCOMDB,最後設Connected為True;
2. 置入一個Tquery元件,設DatabaseName為Tdatabase元件的DatabaseName;
點選右鍵啟動SQL Builder建立SQL特性的SQL敘述〔Table選BIOLIFE,
勾選資料表名稱旁的勾選盒,選擇所有欄位的資料;離開SQL Builder,
回答Yes把自動產生的SQL敘述儲存到Tqurey的SQL特性之中〕;
設Active為True.接下來可準備使用Tprovider元件把存取這些資料的介面輸出,
讓用戶端應用程式可以藉由應用程式伺服器存取到這些資料.
當然,除了使用剛才介紹的Tquery元件外,也可以使用Ttable元件;
或是對於SQL Server級的資料庫使用TstoredProc元件來存取遠端資料庫中的資料.
&amp;#61608;
使用Provider元件:在應用程式伺服器成功的從遠端資料庫取得資料之後,
它必須提供一個方式讓用戶端應用程式可以和它溝通.
Tprovider可以連結到Delphi的資料集元件,然後輸出可以讓用戶端操縱存取資料的介面.
如此一來用戶端就可以使用這個輸出的介面來存取和異動遠端的資料.
〔在遠端資料模組中置入一個MIDAS元件盤中的Tprovider元件,
設DataSet為Query1代表這個Provider元件可以輸出Query1中的資料;
點選右鍵,選擇Export Provider from data module
(輸出Provider元件的介面,用戶端應用程式就可以使用這個介面提供的方法
來操作Query1中的資料).除直接使用Tprovider元件輸出Provider介面外,
程式師也可不使用Tprovider元件,而在資料集中直接輸出Provider介面
(右鍵點選Query1元件,選擇Export Query1 From data module,
可以直接輸出Query1的Provider介面,它的功能和使用一個另外的Tprovider元件幾乎
是一樣.但這種做法會讓程式師失去控制Tprovider元件的一些方法和特性的能力).〕
&amp;#61608;
輸出Provider元件介面讓用戶端應用程式存取:輸出Provider元件的介面後,
程式師可以啟動Delphi的Type Library編輯器檢視剛才輸出的Provider介面.
用戶端應用程式就可以使用這個介面存取遠端資料庫中的資料.
除了Delphi自動輸出的特性和方法外,程式師也可以加入程式定義的特性和方法
讓用戶端應用程式使用.〔最後在主表格中加入一個Tlabel元件,
設caption為EasyDCOM應用程式伺服器,以便在稍後開發用戶端應用程式時
辯別伺服器應用程式伺服器之用.〕
&amp;#61608;
注冊伺服器應用程式:注冊這個應用程式伺服器讓COM系統可以自動的啟動
這個應用程式伺服器.注冊方法非常簡單,只要執行一次應用程式伺服器,
它就會自動的在系統中注冊.
&amp;#61608;
開發用戶端應用程式:開發多層式的用戶端應用程式和開發一般的
二層資料庫應用程式沒有什麼不一樣,只是使用的元件是ClientDataSet而不是
一般的資為集元件.步驟如下:
1. 建立一個新的Delphi應用程式:讓我們為這個範例建立一個專案組.
〔File|New,選擇建立Project Group建立一個新的專案群組,
先加入剛才建立的應用程式伺服器,再點選New按鈕,並且選擇建立一個新的應用程式〕
2. 建立一個新的資料模組:〔File|New,選擇建立資料模組〕由於這個用戶端是
使用DCOM連結剛才開發的應用程式伺服器,所以在資料模組中加入一個元件盤MIDAS中的
TDCOMConnection,設computername為應用程式伺服器所在的機器名稱,
設servername為要使用(EasyDCOMServer)的應用程式伺服器,Delphi會自動
把應用程式伺服器的GUID填在ServerGUID特性中.設Connected為True
(COM會立刻到指定的機器中連結指定的應用程式伺服器,如果應用程式伺服器
還沒有被啟動的話,COM/DCOM會自動的啟動這個應用程式伺服器).
3. 在TDCOMConnection連結並且啟動應用程式伺服器後,就可以使用TclientDataSet
來存取遠端的資料了.在資料模組中加入一個TclientDataSet元件,
設RemoteServer為資料模組中的DCOMConnection,設ProviderName,
設PacketRecord為一較小的數值(代表一次要從應用程式伺服器得到多少資料,
-1為全部),設Active為True.
4. 在主表格中加入TDBNavigator,TDBGrid和TDBImage元件,
設Datasource為資料模組中的DataSource1,DGImage的DataField為Graphic.
〔File|Use Unit…讓主表格使用資料模組〕
5. 執行用戶端應用程式.如果在前面開發應用程式伺服器時,
沒有把Tdatabase的HandleShared設為True的話,可能會發生以下錯誤:
“DAX Error:Name not unique in this context.”和
“Error:Project PEasyDCOMClient.exe raised exception class EoleSysError
with message ‘發生非預期的錯誤!’.Process stopped.Use Step or Run to continue.”
 
还是先cs,在3层吧
 
多人接受答案了。
 
后退
顶部