国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

使用MIDAS訪問遠程Access數據庫

2019-11-18 18:00:21
字體:
來源:轉載
供稿:網友

使用MIDAS訪問遠程access數據庫

2005-5-3
訪問遠程數據庫常用的辦法是使用大型數據庫自帶的客戶端工具,如SQL Server和Oracle等都帶有這樣的工具。帶對于Access這樣的小型數據庫,這種方法就無法使用了,因為Access不提供這樣的客戶端工具。但我們可以通過MIDAS實現訪問遠程Access數據庫。
MIDAS是Delphi提出的三層架構的解決方案。我提供的用MIDAS訪問遠程Access數據庫方法的基本思路是在服務器端建立供遠程訪問的數據模塊,而在客戶端通過MIDAS組件與其建立連接,并在客戶端發送SQL語句給服務器,服務器執行后返回數據集給客戶端。
具體做法為:

服務器端

服務器使用ADO控件訪問Access數據庫,具體是ADOConnection控件建立連接,ADOQuery執行相關操作。使用Data Access的ClientDataSet控件向客戶端返回數據集。并將以上控件放在Remote Data Module的容器中,供由客戶端進行連接。
有如下步驟:
1.         建立application。其Form取名為FormServer,PRoject名為PrjServer;
2.         FileàNewàOther…,在彈出的New Items對話框中選擇Multitier頁,在該頁中選擇Remote Data Module,確定;
3.         在彈出的Remote Data Module Wizard對話框中,在coclass一欄中填入AccessServer,Instancing與Threading Model保持默認,即表示不同線程之間互相獨立,確定后即生成一個RemoteDataModule的派生類AccessServer(在ViewàType Library中可以查看該類的詳細信息);
4.         在程序所在的文件夾中新建一個名為data的文件夾,在其下放入一個名為my.mdb的Access數據庫文件,其中有一個名為person的表,該表中只有兩個字段,分別為name和age,都是文本類型;
5.         遠程數據模塊AccessServer上放置各個控件,最終效果如下圖所示:
服務器遠程數據模塊
各控件的相關屬性與作用如下表所示:
控件類型
所屬頁面
屬性
作用
ADOConnection
ADO
name
ADOConnection1
連接Access文件
ConnectionString
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=./data/my.mdb;Persist Security Info=False
ADOQuery
ADO
name
ADOQuery1
執行相關查詢操作
Connection
ADOConnection1
ClientDataSet
Data Access
name
DataSetProvider1
向客戶端提供數據接口
DataSet
ADOQuery1
Options. poAllowCommandText
true
6.         編譯并運行該服務器程序。運行該程序即注冊了一個MIDAS的服務器,也只有在服務器程序運行的條件下,才能進行下一步的客戶端的程序開發。

客戶端

以DCOM方式與服務器端進行連接,
1.         建立Application。其Form取名為FormClient,Project名為PrjClient;
2.         在Form上放置各個控件,最終效果如下圖所示:
客戶端界面
各控件的相關屬性與作用如下表所示:
控件類型
所屬頁面
屬性
作用
Edit
Stardard
name
txtQuery
接收查詢語句
Text
select * from person
Button
Stardard
name
btnQuery

 
 
DCOMConnection
DataSnap
name
DCOMConnection1
通過DCOM方式連接服務器
ServerName
PrjServer.AccessServer
ClientDataSet
Data Access
name
ClientDataSet1
向遠端發出SQL語句,并取得數據集
RemoteServer
DCOMConnection1
ProviderName
DataSetProvider1
DataSource
Data Access
name
DataSource1
作為數據呈現控件的數據源
DataSet
ClientDataSet1
DBGrid
Data Controls
name
DBGrid1
顯示從遠端取回的數據集
DataSource
DataSource1

說明:

l         DCOMConnection1的ServerName屬性是由列表中選取的,該列表是所有注冊的MIDAS服務器列表
l         ClientDataSet1的ProviderName屬性指定的是服務器上的一個控件
3.         在Form上雙擊按鈕btnQuery,在其Click處理函數下加入如下一段代碼:
  self.ClientDataSet1.Close;
  self.ClientDataSet1.CommandText:=self.txtQuery.Text;
  self.ClientDataSet1.Open; 
說明:
如果給出的是無返回的SQL語句,最后一句由Open改為Execute。
運行后,效果如下圖所示:
客戶端運行效果

改變客戶端的連接方式

在上面的例子中是用DCOM方式連接服務器,這一般只能在局域網內使用。如果要在廣域網內使用,可以改用Socket方式連接服務器。為此需做如下改動:
1.         在服務器端運行Delphi自帶的scktsrvr.exe程序,該程序在Borland/Delphi7/Bin/文件夾下
2.         在客戶端上用SocketConnection控件替換DCOMConnection控件,有關屬性的改動如下表所示:
控件類型
所屬頁面
屬性
作用
SocketConnection
DataSnap
name
SocketConnection1
通過Socket方式連接服務器
Address
127.0.0.1(本機)
ServerName
PrjServer.AccessServer
ClientDataSet
Data Access
RemoteServer
SocketConnection1
向遠端發出SQL語句,并取得數據集

注意:

SocketConnection的默認端口是211,這也是scktsrvr的默認端口。為此要在服務器端的防火墻上開放該端口

 

上一篇:VCL的通用屬性,方法和事件

下一篇:最短路徑(校園導游)的簡單算法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 青神县| 宝清县| 车致| 新乡县| 甘泉县| 怀宁县| 镇江市| 穆棱市| 和龙市| 类乌齐县| 无棣县| 乌鲁木齐市| 满洲里市| 孟州市| 东海县| 高安市| 临泉县| 顺义区| 凤冈县| 胶南市| 扬中市| 云安县| 阜平县| 鲜城| 武穴市| 甘泉县| 乐至县| 平阴县| 鄄城县| 常宁市| 绥宁县| 上林县| 宁德市| 长海县| 崇礼县| 萝北县| 张家港市| 南投市| 翁牛特旗| 浦北县| 卫辉市|