Delphi三层实例

Delphi中ClientDataSet的用法小结 Delphi TClientDataSet控件中的ClientDataSet用法摘要继承自TDDataSet,其数据存储文件格式扩展名为Cds。它是一个基于文件数据存储和操作的控件。通过在Delphi中使用TClientDataSet控件,可以将应用程序与数据库驱动程序完全分离,并实现了传统数据集控件简单使用的特点,这为编写“精简”数据库应用程序提供了技术方法和手段。 阅读详情
在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。
在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如果使用Scocket在系统使用时必须提供Scocket连接器,而Dcom则不用。客户端和服务器的连接需要Broker来联系。
环境为winxp sp2 + delphi 7 + db7.(MSSQL2000)
创建过程:
1、选择"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
一、Midas的安全问题。
    Midas技术是Delphi中进行三层开发的首选技术,它不仅有纯DCOM/COM+(COM+技术是.NET技术的基础)的优点,而且也结合了Delphi的快速开发特性,可以快速开发出想要的系统,其开发速度是用VC,PB等开发DCOM的数十倍,把程序员从烦杂的代码中解脱出来,从而将更多的精力投入到业务逻辑的设计中去。
    但是Midas技术的一个最令人担忧的就是它的安全问题:
远端只要知道应用服务器的端口号即可访问到应用服务器,而一旦访问到应用服务器,TClientDataSet即可获得ProviderNames列表。一旦知道了ProviderNames列表,这就相当于将数据库暴露在外了。
关于可轻易获得ProviderNames列表的问题,我使用下面的方法解决:
在服务器端定义一个
LoginMTS(const AUserId, APassword: WideString): WordBool;
方法。初始状态下,所有的DataSetProvider和数据集的连接断开。用户必须调用LoginMTS并传递用户名和密码,登陆成功才将DataSetProvider和数据集的连接打开。这样如果用户验证没有通过,即使它获得了ProviderNames列表也没法调用接口中的方法对数据库进行操作。
 
二、Midas中主从表的实现
主从表的应用在信息系统中应用很广。在两层开发中我们可以通过直接建立两个数据集之间为主从关系来实现主从表;
在三层中虽然我们仍然可以通过直接建立两个数据集之间为主从关系来实现主从表,但是这样就要求把数据库中所有相关的数据行都下载到本地,丧失了三层开发的优势。我在实际中使用下面的方法实现。这里我以实现入库单查询、添加、修改、删除(CRUD)为例来讲解:
(1)新建一个MTS Data Module,命名为TmtsStockInListBiz,增加如下方法:
    function QueryStockInListMasterById(const AId: WideString;var ADatas: OleVariant): WordBool; safecall;
    function QueryStockInListSlaveByMasterId(const AId: WideString;var ADatas: OleVariant): WordBool; safecall;
    procedure UpdataStockInListMaster(var ADatas: OleVariant); safecall;
    procedure UpdataStockInListSlave(var ADatas: OleVariant); safecall;
    function GenerateStockInListId: WideString; safecall;
QueryStockInListMasterById作用是根据入库单单号查询入库单的基本信息(入库日期、负责人等),Aid为入库单单号,Adatas为返回值,其格式就是Midas的数据包,可以将其附给ClientDatSet的Data属性。
QueryStockInListSlaveByMasterId作用是根据入库单单号查询入库单的详细信息(商品条码,数量)
UpdataStockInListMaster是对入库单主表进行删除、添加、修改操作。只要将ClientDataSet的Delta属性做为传递即可。
UpdataStockInListSlave是对入库单从表进行删除、添加、修改操作。
GenerateStockInListId是产生一个唯一的入库单号。
 
下面是几个方法的代码,都很简单,就不多解释了,可以查看Delphi的帮助。
function TmtsStockInListBiz.QueryStockInListMasterById(
const AId: WideString; var ADatas: OleVariant): WordBool;
begin
result := false;
ADatas := null;
try
    cdsQuery.Close;
    cdsQuery.CommandText := 'select * from t_StockInListMaster where Id=:Id';
    cdsQuery.Params.ParamByName('Id').AsString := AId;
    cdsQuery.Open;
    if cdsQuery.RecordCount > 0 then
    begin
      result := true;
      ADatas := cdsQuery.Data;
    end;
finally
    cdsQuery.Close;
end;
end;
 
procedure TmtsStockInListBiz.UpdataStockInListMaster(
var ADatas: OleVariant);
var
eCount: Integer;
OwnerData: OleVariant;
begin
DCOMConStockInList.GetServer.AS_ApplyUpdates('dspStockInListMaster',
    ADatas, -1, eCount, OwnerData);
end;
 
function TmtsStockInListBiz.GenerateStockInListId: WideString;
var
LPrior: string;
i: Integer;
begin
cdsQuery.Close;
cdsQuery.CommandText := 'select top 1 id from t_StockInListMaster order by id desc';
cdsQuery.Open;
LPrior := cdsQuery.FieldByName('Id').AsString;
i := StrToIntDef(RightStr(LPrior,8),0);
Inc(i);
result := 'RK' + FormatFloat('00000000',i);
cdsQuery.Close;
end;
(2)、新建一个应用程序,通过DCOMConnection、SocketConnection等连接到MTS组件,然后就可以调用MTS的相应的方法实现客户端功能了。
放入cdsStockInListMaster、cdsStockInListSlave两个ClientDataSet控件,在控件上点击右键,选择“FieldsEditor”新建于服务器中的字段同样的字段,然后再次在控件上单击右键,选择“CreateDataSet”,建立一个本地数据库。
(3)根据入库单号查询入库单的方法实现:
procedure TFormStockInList.BtnFindClick(Sender: TObject);
var
v,vs: OleVariant;
begin
if SocketConStockInList.AppServer.QueryStockInListMasterById(Trim(LEdtId.Text), v) then
begin
    cdsStockInListMaster.Data := v;//显示入库单主表(主要信息)
    if SocketConStockInList.AppServer.QueryStockInListSlaveByMasterId(Trim(LEdtId.Text), vs) then
      cdsStockInListSlave.Data := vs; ;//显示入库单从表(明细信息)
end
else
    ShowMessage('此单不存在!');
end;
(4)新建入库单的实现
procedure TFormStockInList.BtnNewClick(Sender: TObject);
var
LId: string;
begin
ClearCDSRecord;
cdsStockInListMaster.Open;
cdsStockInListMaster.Insert;
LId := SocketConStockInList.AppServer.GenerateStockInListId;
LEdtId.Text := LId;
cdsStockInListMaster.FieldByName('Id').AsString := LId;
cdsStockInListMaster.FieldByName('GenerateDate').AsDateTime := Now();
end;
(5)提交功能的实现
procedure TFormStockInList.BtnPostClick(Sender: TObject);
var
LQuerymts: ImtsQueryObjDisp;
LBar: string;
begin
SetSocketConnectionConnect(SocketConQuery);
LQuerymts := ImtsQueryObjDisp(SocketConQuery.GetServer);
SocketConQuery.Close;
if cdsStockInListMaster.RecordCount > 0 then
    SocketConStockInList.AppServer.UpdataStockInListMaster(cdsStockInListMaster.Delta);
if cdsStockInListSlave.RecordCount > 0 then
SocketConStockInList.AppServer.UpdataStockInListSlave(cdsStockInListSlave.Delta);
end;
注:本文中ClientDataSet控件的名称开头一般为cds、TsocketConnection控件的名称开头一般为SocketCon。
三、动态设置TsimpleObjectBroker的服务器列表
procedure SetSocketConnectionConnect(AValue: TSocketConnection);
procedure FillAppServerList(ABroker: TSimpleObjectBroker);
var
   sl: TStringList;
   i, n: Integer;
begin
    sl := TStringList.Create;
    从配置文件中读取服务器列表,并保存到sl中;
    n := sl.Count - 1;
    ABroker.ServerData := null;
    for i := 0 to n do
    begin
      ABroker.Servers.Add;
      ABroker.Servers[i].ComputerName := sl.Strings[i]
   end;
    sl.Free;
end;
var
LBroker: TSimpleObjectBroker;
begin
LBroker := TSimpleObjectBroker.Create(nil);
    FillAppServerList(LBroker);
    AValue.ObjectBroker := LBroker;
    try
      AValue.Connected := true;
    except
      raise Exception.Create('应用服务器连接错误!');
    end;
    LBroker.Free;
end;
织梦CMS中为CKEditor添加自定义样式按钮的完整实践 CKEditor作为主流富文本编辑器,其样式复用能力直接影响内容生产效率。理解插件注册机制、命令绑定原理与CSS注入优先级,是实现稳定可维护自定义功能的技术基础。在织梦CMS这类深度定制化系统中,需特别关注路径劫持、加载时序、皮肤覆盖等工程约束,才能让按钮真正‘可用’且‘好用’。本文围绕自定义高亮引用按钮展开,涵盖插件开发、多语言支持、快捷键集成及移动端适配等典型场景,适用于需要统一内容规范的企业官网、教育平台与政务系统等内容管理环境。 阅读详情

相关推荐

一个三层的Delphi数据库系统实例

内容索引:Delphi源码,数据库应用,三层,数据库  三层架构的一个实例,原型是一个强大的三层数据库操作源码,实现三层模块化管理。编译时注意,需要把每个层也就是每个目录的源程序都编译才行。本程序测试时可直接编译,全用Delphi自带控件,调试很方便。

TClientDataSet[24]: 主从表(Master/Detail)

为什么80%的码农都做不了架构师?>>> ...

weixin_33949359的博客 243

ROS2机械臂MPC轨迹规划实战:从MoveIt 2插件配置到参数调优全流程

本文详细介绍了ROS2机械臂MPC轨迹规划的全流程,从MoveIt 2插件配置到参数调优。通过模型预测控制(MPC)技术,实现高精度运动控制,特别适合复杂装配任务。文章包含环境搭建、插件部署、参数设计及实战调优方法,帮助开发者快速掌握ROS2机械臂的MPC轨迹规划技术。

i0j1k2l3m的博客 206

clientdataset 主从表自定义字段 field value required报错处理方式

写作日期:2019-10-29 作者:习践无界 问题描述: 三层结构客户端主从表结构,主表为视图,视图中有一个自定义字段Status1,保存的时候弹出**“Filed value required”**报错。 视图中的Status1字段为自定义字段,取值方式如下: CASE WHEN M.Canceled=1 THEN N’取消’ WHEN M.Ended=1 THEN N’结案’ ...

习ぃ践无界う 1622

电商秒杀场景下,如何用Redis+Lua脚本实现原子性库存扣减(附完整代码)

本文针对电商秒杀场景下的高并发与超卖难题,详细解析了如何利用Redis的原子性命令与Lua脚本实现可靠的库存扣减。通过对比多种方案,阐述了Redis+Lua作为黄金搭档的技术原理,并提供了从基础扣减到预扣减模型的完整代码实现,确保在高并发下数据的一致性与系统性能。

weixin_29219539的博客 503

【低空经济】低空无人驾驶航空器运行管理系统设计方案

低空无人驾驶航空器运行管理系统(以下简称“系统”)旨在为低空域内的无人驾驶航空器(UAV)提供高效、安全、智能的运行管理服务。系统通过集成先进的通信、导航、监控、数据处理和人工智能技术,实现对低空域内无人驾驶航空器的实时监控、动态调度、风险评估和应急响应,确保其在复杂空域环境中的安全运行。系统的核心功能包括空域管理、飞行计划审批、实时监控、冲突预警、应急管理和数据分析。空域管理模块负责划分和管理低空域资源,确保不同飞行任务之间的空域隔离和高效利用。

2502_92579126的博客 1140

Delphi 三层 实例(1)

http://www.25aspx.com/Knowledge/ASPdotNet/81.html 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库     在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。     在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如果使用Scocket在系统使用时必须提供Scocket连接器,

流年~~ 2030

【多元统计分析】均值向量和协方差阵的检验——spss上机实验

均值向量和协方差阵的检验——spss上机实验 #参考书目为《多元统计分析》(第五版)——何晓群.中国人民大学出版社 #如有错误,请指正!谢谢~ #关注公众号搜索同名文章获取数据~ 习题2.3 现选取内蒙古、广西、贵州、云南、西藏、宁夏、新疆、甘肃和青海等9个内陆边远省区。选取人均GDP、第三产业比重、人均消费支出、人口自然增长率及文盲半文盲人口占15岁以上人口的比例等5项能较好的说明各地区社会经济发展水平的指标,验证边远及少数民族聚居区的社会经济发展水平与全国平均水平间有无显著差异。 将输入导入spss

suansuannainaizi的博客 3万+

一个三层的Delphi数据库系统实例:项目核心功能/场景

一个三层的Delphi数据库系统实例:项目核心功能/场景 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发中,架构设计的重要性不言而喻。今天,我们将为您推荐一个基于Delphi语言的优秀开源项目——一个三层的Delphi数据库系统实例。该项目采用经典的三层架构模式,包括表示层、业务逻辑层和数据访问层,旨在帮助开发者深入理解和掌握这一架构模式,提高软件的可维...

gitblog_06784的博客 811

告别Link180!在Ansys Mechanical 2020R2中正确启用Cable280绳索单元(附Beta选项开启指南)

本文详细介绍了在Ansys Mechanical 2020R2中启用Cable280绳索单元的全过程,包括Beta选项的开启步骤、建模技巧及高阶应用。Cable280作为专为绳索仿真设计的单元,相比传统的Link180单元,在大变形模拟和计算效率上表现更优,特别适合斜拉桥、电梯牵引绳等工程场景。

weixin_33711647的博客 405

Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)

在12.0的系统定制化开发中,由于从12.0开始SystemUI下拉状态栏和11.0的变化比较大,所以可以说需要从新分析相关的SystemUI的 布局,然后做分析来实现不同的功能,今天就开始实现关于隐藏SystemUI下拉状态栏中的通知栏布局系列二,去掉下拉状态栏中 通知栏部分 白色的圆角背景

安卓兼职framework和app工程师的博客 1634

Delphi 三层 实例(2)

物流信息系统开发手记-Delphi的三层开发   《开发技术篇》中我们将讲解我在开发系统中遇到的技术问题及解决方案,希望对大家有帮助。对于物流信息系统的分析设计问题,我将在另一篇文章《物流信息系统开发手记――系统构架篇》中讲解。 一、Midas的安全问题。     Midas技术是Delphi中进行三层开发的首选技术,它不仅有纯DCOM/COM+(COM+技术是.NET技术的基础

流年~~ 2781

PCL点云库入门(第1讲)——PCL库简介和安装(Win10/11+VS2019+PCL 1.12.0)

PCL,全称为,即点云库,是一个专注于2D/3D图像和点云处理的大型开源项目。该项目最初由斯坦福大学的杰出计算机视觉专家Radu博士及其团队开发和维护,经过十余年的发展,目前(2024年12月)已更新至1.14.1版本。PCL点云库集成了众多尖端的点云处理算法,这些算法不仅包括基础的滤波、特征估计、表面重建、配准、模型拟合和分割等,还涵盖了更高级的功能,如点云数据的语义理解、场景解析以及动态环境下的实时处理。这些算法能够对含有噪声的点云数据进行有效过滤,去除异常值;

qq_36812406的博客 1万+

Delphi编程:三层数据库构架实例解析

 在数据库开发方面Delphi相对于其他众多开发工具其优势在于灵活快速,且十分稳定。开发数据库首先是要连接数据库。目前,以C-S方式通过网络运行程序,一般都使用3层方式进行数据通信。所谓的三层数据库,就是在服务器端放置一个中间层,本实例使用Remote Data Module(远程数据模块)创建,3层的好处就是把一些功能放在中间层,这样当某些功能发生转变时,既不用修改数据库,也不用修改客户端,只要

编程资料收集与共享交流 1659

[Dify实战] 在 Dify 官网环境使用 File Translator 插件实现 Office 文档翻译(支持 DOCX/XLSX/PPTX)

摘要:Dify平台的FileTranslator插件可实现Office文档一键翻译,保留原格式和结构。该插件支持Word、Excel、PPT等文件格式,无需额外密钥,直接复用Dify配置的大模型。安装后,用户可在Workflow中调用插件,设置目标语言等参数完成翻译。输出文件自动命名,保留原格式。适用于跨国协作、海外营销等场景,显著提升多语言办公效率。该插件简化了文档翻译流程,是企业用户和开发者的实用工具。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 544

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python三层架构实例_delphi 三层架构简单例子(经测试成功)

所谓三层:(1) 客户端(2) 服务器端(3) 数据库在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如果使用Scocket在系统使用时必须提供Scocket连接器,而Dcom则不用。客户端和服务器的连接需要Broker来联系。环境为winxp sp2 + delphi 7 + db7.(MSSQL20...

weixin_39867559的博客 217

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

delphi 三层架构简单例子(经测试成功)

delphi 三层架构简单例子(经测试成功) 转载2013年12月19日 09:48:57 1100 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。 在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如果使用Scocket在系统使用时必...

weixin_30809333的博客 134

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ScktSrvr源码 Delphi三层的中间件

delphi三层开发中间件。

gareth_952的博客 902

Delphi的三层开发初学经验

近日闲来无事,看了写有关Delphi的书,发现有关三层的书都一样简单略过,网上搜索了一下也是零零碎碎,经过简单实验测试了一下内容。 在数据库开发方面Delphi相对于其他众多开发工具其优势在于灵活快速,且十分稳定。本实例使用Remote Data Module(远程数据模块)创建。服务端:  首先让我们来编译服务器端,打开Delphi7, 选择File菜单,New -> application,创

chinajobs的专栏 1795

DELPHI DATASNAP 2010 入门操作(2)不写一行代码,绿色三层我也行

有一行代码的三层,功能肯定非常的简单,但是,再简单,我们也三层了,学习一个东西,需要从入门开始就有兴趣,如果入门就给吓怕了,哪么后来何来信心学习呢?现在就让我们开始吧,不只是没有华丽的词语,而是连用词都不专业,因为,我也只是一个入门者。   我所用的版本为:Embarcader

xxhh07的专栏 1685

delphi 三层开发经验汇总[转]

delphi很早就已经可以进行三层的开发了. 但一直到现在, 网上这方面的东西太少 了. 要么太老, 甚至不完全正确. 例如: 如 何进行多表更新(提交), 很多回复还是说用ADOConnection的事务, (如果要同时更新SQL SERVER和Oracle数据库的表怎么 办). 当然也有说用SetComplete, SetAbort的. 但说的很简单, 其中的注意事项又是...

115

Delphi语言的物联网

Delphi是一种由Borland公司开发的高级编程语言,最初用于Windows应用程序的开发。随着技术的进步,Delphi已经能够支持多平台的应用开发,比如Windows、Linux、macOS,甚至移动平台的iOS和Android。快速开发:Delphi提供丰富的可视化组件,开发者可以通过拖放方式快速搭建用户界面,提高开发效率。强大的数据库支持:Delphi内置对多种数据库的支持,包括但不限于Firebird、MySQL、SQLite等,使得数据管理更加便捷。跨平台功能。

2501_90990345的博客 616

关于Delphi的三层数据库系统的实现方法

转自:微点阅读https://www.weidianyuedu.com 摘 要 随着中间件与Web技术的发展,三层或多层分布式应用体系越来越流行。而中间件作为分布体系应用的关键技术,以其独特的优势为各种分布式应用的开发注入了强大动力,极大地推动了应用系统集成的发展。论文描述了基于Delphi中间件的三层结构访问数据库信息的方法。 1 引言 当前的数据库应用系统中,按其结构划分为两类,一类是两层结构的数据库应系统,另一类是多层结构的数据库应用系统。 两层结构的数据库应用系统包括客户/服...

ysds20211402的博客 1300
吴名大侠
博客等级 码龄15年 0粉丝 0原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值