delphi 三层架构简单例(转)

所谓三层:

(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里就可以了。
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以上,即使使用包编译模式。

============================================================

在使用DataModel窗体存放数据库控件的程序中,应注意:
1、如果在其他窗体中调用DataModel中的控件必须在先引用Datemodel的单元,在implementation下面加入以下语句
uses 
     DataModel的单元名称;
2、必须改变窗体的创建顺序,datamodel窗体必须先于引用该窗体控件的窗体创建
三层结构
应用层:
一、需要三个数据控件:
Adoconnect         
AdoQuery
DataSetProvider
二、联接顺序:
SQL数据库<--Adoconnect<--Adoquery<--DataSetProvider
三、属性设置:
Adoconnect:      1、ConnectionString
                  2、Connected
Adoquery:         1、connection
                  //2、Active
DataSetProvider: 1、DataSet
                  2、option.poAllowCommand:=true
四、其他
1、运行SocketServer并开端口
2、数据模块使用远程数据模块
客户端:
一、基本控件
SocketConnection
ClientDataSet
DataSoure
DBGrid
二、联接顺序:
应用层<--SocketConnection<--ClientDataSet<--DataSoure<--DBGrid
三、属性设置:
SocketConnection: 1、Adrress
                   2、ServerName
                   3、Port
                   4、connected
ClientDataSet:    1、RemoteServer
                   2、CommandText
                   3、ProviderName
                   4、Active
DataSoure:        1、DataSet
DBGrid:           1、DataSoure
四、其他
一、先关闭记录集后执数据库操作语句
    rs.close
    sqlstr="insert into abc(a,b,c) values("a","b","c")"
    rs.open sqlstr,conn
    rs.update
    rs.colose
二、在可能发生出错的数据库操作做错误捕捉,如:open,update,delete等
    rs.close
    sqlstr="insert into abc(a,b,c) values("a","b","c")"
    on error resume next  
    rs.open sqlstr,conn
    if err then
    msgbox(err.Description)
    msgbox(cstr(err.number))
    rs.update
    rs.colose

时间: 2024-10-10 13:52:25

delphi 三层架构简单例(转)的相关文章

.NET三层架构简单解析

对于三层架构来说,主要是使用设计模式的思想,对于项目的各个模块实现"高内聚,低耦合"的思想.这里就不做详细的介绍了,如果大家有兴趣,可以阅读软件工程和设计模式相关文章. 对于三层架构来说,就是使用类,把我们在做项目的过程中,可能需要反复操作数据库,反复的使用某个方法等等,可能就是操作的参数不同.如果我们如果在每次使用的时候,都去编写相应的代码,无疑会增加程序员的负担.所以,为了增加方法的重用,就把这些能够重用的方法抽象成类,以供程序员在其它地方可以调用. 当然了,这也是面向对象的一部分

三层架构简例

三层架构分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL)再加上实体类库(Model) 转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688 1.实体类库(Model),主要存放数据库中的表字段. 操作: (1)先建立实体类库Model,打开项目,在解决方案中右键-->添加-->新建项目-->选中类库-->改名Model-->确定 (2)选中Model类库-->Shift+ALT+C-->建立实体类.UserInfo类 n

三层架构简单代码描述

/// <summary> /// UI层的简单代码 /// </summary> void LoadStudentInfo() { BLL.PersonManager bllperson=new BLL.PersonManager(); //实例化BLL逻辑处理层 List<MODEL.Person> list = bllperson.BllStudentInfo(false); //接受从BLL层传回的返回值 this.dgvStudent.DataSource =

三层架构简单实例【转】

原文发布时间为:2009-05-17 -- 来源于本人的百度文章 [由搬家工具导入] http://dev.csdn.net/author/gongchl2006/c9ce459daf3240aaa3d7e30dc32bed55.html

用VS2010创建三层架构开发模式及三层架构的研究

三层架构的研究 三层体系结构的概念 用户界面表示层(USL) 业务逻辑层(BLL) 数据访问层(DAL) BLL将USL与DAL隔开了,并且加入了业务规则 各层的作用 1:数据数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务. 2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建. 3:表

浅谈.NET,C#三层架构(自己总结)

 三层架构 常见架构: 三层(经典) MVC MVVM MVP 开发中常见的23种设计模式: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 设计模式的六大原则 1.开闭原则 2.里氏代换原则 3.依赖倒转原则 4.接

delphi bcb三层架构 源码

自己写了个程序做三层架构使用. 开发环境 WINDOWS7+DELPHI XE7 bcbXE7 服务端为BCB,客户端为delphi.服务端是从delphi代码转过来的. 技术特点采用FireDac, RealThinClientSDK_v628_2013Q4bcb ,JSON 传输安全,传输包最小化. 本机查询10W条数据 4字段小于5秒.1W条数据1秒内完成. 多数据多客户端程序源码: 一.关于客户端与服务端的认证 使用 验证机制,从验证数据库中查询登录账户,这部分做的比较简 单,结合WEB

WPF MVVM 架构 Step By Step(2)(简单的三层架构示例及粘合代码GLUE code)

我们第一步就是去了解三层架构和问题然后去看MVVM是怎么去解决这些问题的. 现在,感觉和事实是完全不同的两个东西.当你看到三层架构的框图的时候,你会觉得每层的职责被分配的很好.但是当你你真的去写代码的时候你会发现其实一些层被迫去做本不应该他们做的额外的事情(违反了SOLID原则的S). 这个额外的工作就是在UI-Model和Model-Data access之间的代码.让我们就把这些代码称为“GLUE”代码.有两种主要的逻辑会造成“GLUE”代码(也许我知道的并不够多,其他的可以自己发现): 1

.NET 三层架构的简单规划

今天心血来潮简单看了下petshop4.0的源代码,他就是用三层架构来实现的.现在简单的做下总结. 首先我们先看下petshop的三层架构. 1 WEB 表示层 2 Model 业务实体 3 BLL 业务逻辑层 4 DALFactory 数据层的抽象工厂 5 IDAL 数据访问层接口定义 6 SQLServerDAL SQLServer数据访问层 7 OracleDAL Oracle数据访问层 8 DBUtility 数据库访问组件基础类 这个是这个项目和数据相关的类库. 以上两张是业务逻辑和数