分享
 
 
 

Multi-Tier结构程序开发基础教程 (一)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

Multi-Tier结构程序开发基础教程 (一.1)

作者:z33

鉴于同学们刚接解Delphi,并对老师上课所讲的Multi-Tier结构编程不是十分理解,所以我写了下面一个教程,给我最好的同学们,希望这篇教程能帮助同学们更好的学习Delphi,不要掉队,也希望我通过写一写学习的经验,总结一下,对Delphi有更深的了解。

多层开发的基本概念我不想多说了,我只把写一下它的这实现过程。

一、首先编写应用程序服务器,这个服务器的作用是连接数据库和客户端,起到承接客户端和数据库服务器之前的桥(暂且叫它桥吧)。

1、新建一个工程,

File - New - Application 。

2、再往新建的工程上放一个实现多层的“远程数据模板”(中文我觉得应该叫这个),

File - New - Other -Multitier - Remote Data Module - 单击OK。

3、接上一步,会出现一个对话框,

名字起好了填上去点OK就可以了。

上图中,CoClass Name就是此程序的名称,叫COM的名称,这个名称最好起一个有意义名字,因为在你做客户端的时间需要依据这个名字连接到这个服务器。比如是:multi_test(意思是多层测试)或者 X_test ,好记~而且酷!。

{下面灰色字这一段不需要看懂

下面的Instancing选择服务器的处理线程方式,现在选的是Multiple Instance是指多前客户端可共享一个线程应用程序服务器。还有Single Instance是多对多的处理方式,就是一个客户端对应一个线程应用程序,当多客户端时,服务端也会开和客户端一样多的线程运行,好处是各线程相对独立,不会相互影响,但相对比较占资源。而Internal是创建一个In-Process的COM程序(DLL文件格式),这项用得比较少,据我理解是需要和其它对象兼容而设的,这是我的理解,有不同看法欢迎讨论。

最后一个Threading Model是用它设置In-Process COM程序的多任务模式的,太多了,懒得讲了,大家自己看书吧。}

4、 继续干!拖一个Table1组件到Form1上去,设置Table1的DatabaseName为DBDEMOS,Table Name为Customer.db。(这部分是基础,我不多讲了,不懂去学学前面的知识。)再拖一个DataSetProvider1组件(不要问我ClinentDataSet组件在哪个栏里,自已找!),并设置它的DataSet属性为Table1。这里DataSetProvider组是向客户端提供数据集的接口。DataSetProvider(数据集提供者),DataSet属性是设置它的数据集是什么,这里指向Table1这个数据集。弄好了这些,我们的服务器就完成了,接下来运行即可,运行的目的是让服务器在系统中注册。

(另外你也可以在Form1上添一个Label标签,标识一下,如下图:

5、保存工程。

二、 编写客户端应用程序

1、新建一个工程。

File - New - Application

2、拖一个TDCOMConnection控件到Form1上(还是那句话,不要问我它在哪儿)。

把它的ComputerName属性设成127.0.0.1,这里要说明一下:

ComputerName这个属性是设置你要连接的服务器,填上127.0.0.1就是自己的机器,因为要在自己的机器上调试嘛。当然如果希望连到别的机器上也可以,当然前提是别的机器有已经做好并注册运行的Application Server ,简单说就是上面咱们做的应用程序服务器。举个例子,如果你要在我的机器上有已经做好并运行的Application Server,那么我的机器名是c2109,你就可以在ComputerName里填上我的c2109这个计算机名就可以连到我的机器操作了。当然也可以填IP地址,因为有些计算机名可能会引起错误,比如“可乐猫”的计算机名,好像就是“可乐猫”,中文名呀,你敢用吗?我不敢,还是用IP连接吧,是不是?

然后,再去设置ServerName的属性,这个属性里面你会找到你刚才建立的服务器名称,忘了?回去看看

3、再拖一个TClientDataSet控件,把RemoteServer属性设置为DCOMConnection1,再把Provider属行选为DataSetProvider1。注意,当你点上Provider属性时,应用程序服务器将会被启动。(这时不要把那个服务器的窗口关掉,留着它,不然会出错!)

如下图:

4、接着拖一个TDataSource和TDBGrid,TDBNavigator到Form1上,设置DataSource1的DataSet属性为:ClientDataSet1,并把DBGrid1和DBNavigator1的DataSource属性设置为:DataSource1,最后把ClientDataSet1的Active属性设置为:True,激活。

5、保存工程,并运行,至此这个简单的Mulit-Tier已经好了,你学会了吗?

最终效果如图:

这一节里,其实我应该讲一下ActionList的Standard action来实现DBNavigator的工能,因为本节所讲的并没能真正的实现它的ClientDataSet的ApplyUpdates的功能,也就是说不能提交数据,但现在我该睡觉了,所以剩下的留到下一节去讲吧。如果你觉得我讲的有问题,哪个地方讲错了,欢迎来找我讨论,大家一起学习,最后。。。。希望大家都能看明白。呵呵~

对了,还有就是多层的数据库异常处理,虽然老师演示了一下,但我仍然有些地方不明白,想老师新建的那一个Reconcile Error Dialog来做异常处理我觉处理没什么价值,而且不合理,等我再研究研究。:)

本节源程序下载真正实现ApplyUpdates源程序下载

Multi-Tier结构程序开发基础教程 (一.2)

作者:z33

上一节只讲了Multi-Tier的连接,其实上一节就应该把这个一起都讲了,但因为时间有限,所以分成两部分讲了,呵呵~。

因为Multi-Tier结构和普通单机对数据库操作是不一样的,我们也就无法用单机的方法往数据库里写数据,这一节就讲一下在多层结构下对数据操作。

我们要再利用上第一节的程序,这次要往上放一些对数据操作的功能。

一、首先现在我们不用DBNavigator1,而用ActionList控件来实现数据的操作,,我们还需要自己建5个铵钮,并通过ActionList的Standard Action来实现这些功能。

1、往Form1上放5个铵钮,再拖一个Standard控件栏的最后一个控件:ActionList控件,这个控件是帮助我们快速完成铵钮功能的控件,如图:

下面我们来实现它:

a.双击ActionList控件,出现Editing Form1.ActionList1窗口,在窗口左半部空白处点鼠标右键,再选“New Standard Action...”项,如图:

b. 出现了Stand Action列表,我们在里面找到DataSet项,把这项里的所有子项都选上,再点OK,如图:

c.再设置每个按钮的Action属性为对应的Action预置功能。如下表:

铵钮

Action属性

实现功能

Button1

DataSetInsert1

插入一条数据

Button2

DataSetEdit1

编辑当前记录

Button3

DataSetDelete1

删除当前记录

Button4

DataSetCancel1

取消当前操作

Button5

不设置

把修改写入数据库(Caption:=写入)

d. 把每个铵钮的Caption 相对应功能的名称即可。如图:

e. 双击“写入”按钮,在里面写入如下加粗的语句就可以实现向数据库提交修改:

procedure TForm1.Button5Click(Sender: TObject);

begin

clientdataset1.ApplyUpdates(0);

showmessage('已经成功写入数据库中');

end;

其中ApplyUpdates是ClientDataSet的方法(method),功能是提交客户端数据到服务器端,括号里的0表示发生错误的最大值为0,即不允许有错误。

到这里咱们的第一节就完了, 我该去洗洗睡了~~,这次没讲多少东西,最主要的就是那个写入铵钮的clientdataset1.ApplyUpdates(0);这个语句才能实现向数据库提交数据。

下一节讲一下Multi-Tier的Transaction(事务处理),服务器响应机制和错误处理机制。

源程序下载

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有