delphi 三層架構簡單例子(經測試成功)


delphi 三層架構簡單例子(經測試成功)

轉載 2013年12月19日 09:48:57

所謂三層:

(1) 客戶端

(2) 服務器端

(3) 數據庫

    在數據訪問時,使得客戶端必須通過服務器來訪問數據庫。提高了系統的安全性。

    在Delphi中可以使用Socket或者Dcom來連接他們相互間的通訊。如果使用Scocket在系統使用時必須提供Scocket連接器,而Dcom則不用。客戶端和服務器的連接需要Broker來聯系。


環境為winxp sp2 + delphi 7 + db7.(MSSQL2000)

創建過程:
1、請不要新建application.file-new-activex-activex library,file --new--other,選擇"Multitier"--"Remote data module"。在跳出來的對話框里面輸入名稱(任意),例如:AppSqlConn。選擇確定,進入remote data module窗口。
2、加入組件:adodataset,點擊connectionstring屬性,點擊后面的…,進入設定連接窗口。選擇:use connection string--build,在提供程序中選擇:"Microsoft ole db provider for sql server",在連接中:服務器名稱輸入sql server的ip地址,登錄信息中輸入用戶名和密碼(sql server),在選擇數據庫中選擇自己想要使用的數據庫。一般只要地址正確、用戶名和密碼無誤,肯定可以連接通過。確定退出

3、在commandtext中點擊后面的…,進入sql 語句設定,根據自己的要求設定。

4、將active屬性設置為true。只要前面的設定是正確的,這里應該順利通過。
5、加入組件:datasetprovider。設定其dataset屬性為上面的adodataset。
6、到此服務器端已經設置完成。請保存並且運行一次,從而使服務注冊。
7、運行delphi的bin目錄下面的scktsrvr,因為下面要使用socket連接。運行后任務欄中出現socket server的圖標。

8、新建程序(application),然后file--new--data module,會創建客戶端的data module。
9、加入組件:socketconnection,在address中輸入sql server的ip地址,然后在servername中輸入剛才創建的remote data module的服務程序。程序會自動在serverguid中加入id。然后選擇connected屬性為true。只要此處不報告錯誤,此程序基本成功了。
10、加入組件:clientdataset,選擇remoteserver屬性為socketconnection,選擇providename為服務器程序的datasetprovider。然后選擇active屬性為true。
11、到程序的form窗口狀態,首先選擇file--use unit,選擇上面創建的data module,確定。然后加入組件datasource和dbgrid。選擇datasourece的dataset屬性為data module的clientdataset,選擇dbgrid的datasource為這里的datasource組件。現在應該可以看到dbgrid的窗口中出現了想要的數據。保存並且編譯客戶端程序。
12、客戶端分發軟件設定。從服務器端拷貝midas.dll文件到本機的system(98)或者system32(2000),一般自己就可以注冊,否則用regsvr32 midas.dll注冊一下。然后將剛才客戶端程序拷貝過來運行一下,應該可以正常運行。


還有拒絕訪問的錯誤我也碰到過,是沒有打開borland socket server,該程序是borland/bin/scktsrvr.exe
注冊服務器端時應該使用 run-install mts objects安裝到組件服務里,安裝完后可以在
控制面板-組件服務里找到服務器的GUID,然后填到borland socket server里就可以了。
如果需要code的話,請發mail到tech@chinajstar.net

以上轉自http://www.richsearch.com/search/displ.aspx?lid=3291984

scktsrvr.exe是一個NT的服務程序,你用scktsrvr.exe -install安裝之后,每次系統啟動,它都會自動運行的。如果你的客戶端用了socketconnection,每次連接應用服務器的時候,都需要通過scktsrvr.exe才能訪問到你的應用服務器.

scktsrvr.exe -uninstall 即可卸載

midas.dll是個什么文件?

1.數據庫三層的文件.
2.TClientDataSet小家碧玉,恐怕人人都喜歡使用。但是,都知道娶TClientDataSet是有代價的,因為你同時也得面對丈母娘MIDAS.DLL。
3.delphi用來設計多層應用程序的動態庫,用來作客戶端和服務器連接和處理。
4. Multi-tier distributed application service
   多層分布式開發服務
   midas.dll是它運行時需要的動態連接庫。
5.你安裝好delphi時裝在system32里的,delphi的一個DLL.


能不能使用TClientDataSet又不用MIDAS.DLL呢?

很簡單,就是uses一下MidasLib單元!
MidasLib單元在Delphi6中才有,是Lib目錄下的一個dcu文件。一旦在你的源程序中引用了MidasLib單元,程序運行時就不再需要MIDAS.DLL文件。
然而,編譯后程序大小一定會增加200k以上,即使使用包編譯模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM