Delphi的三层开发初学经验


  在数据库开发方面Delphi相对于其他众多开发工具其优势在于灵活快速,且十分稳定。本实例使用Remote DataModule(远程数据模块)创建。

服务端:
  首先让我们来编译服务器端,打开Delphi7,

    选择File菜单,New-> application,创建一个新窗体form1。

  选择File菜单 -> New -> Other-> Multitier -> 选择Remote DataModule(远程数据模块) ->点"OK",进入到 " Remove Data ModuleWizard " 向导对话框,在其Coclass Name 输入server,其他选项选择默认值点击确定按钮即可。

    Delphi的三层开发初学经验

  这样会产生一个窗体,在这个窗体里,我们可以添加BDE页面下的数据库控件和数据库连接组件。

   Delphi的三层开发初学经验


  先编辑属性连接数据库,最后加入DataAccess页面下的一个DataSetProvider控件,设置其属性DataSet指向Query1。这就完成了服务器端的程序设计,保存、编译运行。

Delphi的三层开发初学经验

  同时服务器端需额外运行Scktsrvr.exe程序,该程序在..\\Borland\Delphi6\Bin目录里


客户端:

   打开Delphi7,

   选择File菜单,New -> application,创建一个新窗体form1。

  在新窗体上,添加一个TDCOMConnection控件(在Datasnap页),其属性设置:

  ComputerName:服务器名如:center03或IP:127.0.0.1

  ServerName:应用程序服务器注册名(Project1.server),ServerName选择后,ServerGUID会自动输入GUID值。

  Connected=true 为激活,

在调试的时候,如果是在Windowsxp本机的情况,可以先运行Project1.exe,然后就可以在ServerName中找到project1. server了,然后设置Connected=true 激活。

   Delphi的三层开发初学经验

  再添加一个TClientDataSet控件(在Data Access页),其属性设置:

  RemoteServer:DCOMConnrction1

  ProviderName:DataSetProvider1(该属性是服务器端设定的那个DataSetProvider1)

  Active:true (激活后将能正常连接)

Delphi的三层开发初学经验

  添加TDataSource控件,设置其属性DataSet指向ClientDataSet1。

  添加TDBGrid控件,设置其属性DataSource指向DataSource1。

  这就完成了客户端的程序设计,保存、编译。这样一个三层数据库构架就基本完成了,我们可以在客户端添加数据显示控件,设置同普通数据库连接设置相同。

  客户端运行。


Delphi三层结构对自定义远程接口的实现方法


   在三层中加入新的远程数据模块RemoteDataModule,会自动产生*.tlb的类型库,可自定义方法或函数
  1、必须先在服务器程序的typrlib中加入该函数,并定义好输入、输出变量,相应的修改会自动反应在RemoteDataModule和lib文件中;否则,在调用的时候会出现“methon"函数名" not supported by automationobject”。究其原因,远程数据模块其实相当于我们自定义的一个类,只不过由系统自动生成罢了,在调用的时候
,如果将方法及其输入输出在类库中定义,则找不到该方法,就会出现无法调用的现象。
  2、在RemoteDataModule找到要定义的函数,在那里实现自己的逻辑。
 3、必须把datasetprovider的PoAllowCommandText:=true.否则,你在客户端无法使用lientdataset.commandtext属性了!这样你就可以在客户端调用socketconnection1.appserver..ExecSqls了,注意参数类型必须一致,字符串用widestring!!!!
  4、不能运行三层客户端的自定义解决: regsvr32    midas.dll  ; install    mdac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值