使用MIDAS访问远程Access数据库
2006-02-04 14:02:59 来源:WEB开发网使用MIDAS访问远程access数据库
Allen Tao(http://blog.csdn.net/allentao/)
服务器端
服务器使用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 |
|
name | ADOConnection1 | 连接Access文件 |
ConnectionString | Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\data\my.mdb;Persist Security Info=False | |||
ADOQuery |
|
name | ADOQuery1 | 执行相关查询操作 |
Connection | ADOConnection1 | |||
ClientDataSet | Data Access | name | DataSetProvider1 | 向客户端提供数据接口 |
DataSet | ADOQuery1 | |||
Options. poAllowCommandText | true |
客户端
以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的默认端口。为此要在服务器端的防火墙上开放该端口
更多精彩
赞助商链接