在datasnap 中使用unidac 访问数据(客户端)
前面我们讲了如何使用unidac 在datasnap 的服务端访问数据库,今天大概讲一下客户端如何访问
前面做的服务器?其实这个客户端适合任何datasnap 服务端。
首先我们建一个应用,并加入一个TDatamodule.
加入TSQLConnection 控件,并选择driver 为datasnap
再放置一个TSqlServerMethod,设置 sqlconnection属性。然后打开我们前面做的服务端,就可以在选择服务端的 方法名了。
我们现在主窗体里面调用一下这个服务器方法,代码就非常简单了。
procedure TForm1.Button1Click(Sender: TObject);
begin
dmf.echo_m.Params[].AsString:=edit1.Text;
dmf.echo_m.ExecuteMethod;
memo1.Lines.Add( dmf.echo_m.Params[].AsString)
end;
运行效果如图
说明调用成功。
现在我们再访问我们的数据库。要访问数据库,一共需要4个控件
依次为
- TSQLConnection —连接 DataSnap 服务器;
- TsqlServerMethod — 发送请求到服务器;
- TDataSetProvider — 绑定TClientDataSet到TSqlServerMethod到
- TClientDataSet-这个就不用介绍了
TClientDataSet–>TDataSetProvider–>TSQLServerMethod–>TSQLConnection
前面的控件引用后面。
好了,我们在主界面访问一下数据库。
只有一句代码。
procedure TForm1.Button2Click(Sender: TObject);
begin
dmf.dept_ds.Active:=True;
end;
运行效果如图
下面实现明细表的显示
首先我们把明细表访问的控件再加一遍
为了明细表能够与主表同步,再写一下同步代码
procedure Tdmf.DataSource1DataChange(Sender: TObject; Field: TField);
begin
Emp_ds.Close;
Emp_m.ParamByName('DeptNo').AsInteger := Dept_ds.FieldByName('DEPTNO').AsInteger;
Emp_ds.Open;
end;
回到主界面,重新改一下原来的代码
procedure TForm1.btopenClick(Sender: TObject);
begin
if not dmf.dept_ds.Active then begin
dmf.dept_ds.Open;
dmf.emp_m.ParamByName('DeptNo').AsInteger := dmf.dept_ds.FieldByName('DEPTNO').AsInteger;
dmf.emp_ds.Open;
btOpen.Caption := '关闭表';
end
else begin
dmf.emp_ds.Close;
dmf.dept_ds.Close;
btOpen.Caption := '打开表';
end;
end;
运行
移动主表记录
一切就是这么简单。
具体更详细的操作及实现,可以访问 unidac 官方的文章:https://blog.devart.com/using-dac-products-in-multi-tier-db-application-development.html
在datasnap 中使用unidac 访问数据(客户端)的更多相关文章
- 在datasnap 中使用unidac 访问数据(服务器端)
从delphi 6 开始,datasnap 作为delphi 自带的多层框架,一直更新到最新的delphi 10.3 .同时逐步增加了很多新的功能 ,比如支持REST 调用,支持 IIS ,apach ...
- .NET Core2.0 MVC中使用EF访问数据
使用环境:Win7+VS2017 一.新建一个.NET Core2.0的MVC项目 二.使用Nuget添加EF的依赖 输入命令:Install-Package Microsoft.EntityFram ...
- unidac 访问sql server 字符查询参数失效问题及解决办法
在帮朋友调试kbmmw 服务器的时候,发现用uindac 访问sql server作为后台时,碰见一个问题. 具体如下: cx.Close; cx.sql.add('select * from T w ...
- 在 SharePoint 2010 中访问数据
转:http://blog.banysky.net/?p=81001 数据访问的关键方法有哪些? | 使用查询类 | 使用 SPQuery | 使用 SPSiteDataQuery | 使用 LINQ ...
- 【C#】访问泛型中的List列表数据
光看标题的确不好说明问题,下面描述一下问题场景: 已知后端自定义的返回的Json数据结构如下: response: { "message": "返回成功", & ...
- HTML5中两种方法实现客户端存储数据
HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...
- 【转】在Spring中基于JDBC进行数据访问时怎么控制超时
http://www.myexception.cn/database/1651797.html 在Spring中基于JDBC进行数据访问时如何控制超时 超时分类 超时根据作用域可做如下层级划分: Tr ...
- Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅
在上一篇Spring中使用JdbcTemplate访问数据库中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端 ...
- vue中访问数据接口的配置
业务API接口地址: http://localhost:3816/api/ 前端UI浏览地址:http://127.0.0.1:8080/#/home 由于同源策略的问题: 需要配置代理: 在开发环境 ...
随机推荐
- lvs的负载均衡测试
近来工作闲暇之余,知道自己的知识欠缺,就在网上找来一些学习视频进行学习,在学习的时候,按照讲课老师的讲解步骤进行配置lvs负载均衡,配置环境如下图: 客户端是我本机的虚拟网卡vmnet8 lvs调度器 ...
- Redis 数据类型归纳
Redis的数据类型从整体上看,都是Key-Value键值对的模型,数据类型更确切地说,应该是Value的数据类型,比如string,set,list等,都是key值对应的Value的数据集合格式.不 ...
- git 之连接tfs的git服务器
tfs中的git的管理,注意区分是主页地址,还是代码地址,代码地址中会有 _git http://ip:8080/tfs/p/elasticsearch6.2.0 http://ip:8080/t ...
- Longest Palindrome 最长回文串问题
1.题目 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...
- FileStream说明
FileStream(String, FileMode) FileStream(String path, FileMode) 文件打开模式:(FileMode)包括6个枚举 Append:追加 ...
- jQuery判断鼠标滚动方向
var scrolltop = new Array(); var index = 0; scrolltop[0] = 0; $(document).scroll(function(){ index + ...
- Mysql设置大小写敏感
1.linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写: 2.用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_n ...
- 【spring】使用spring过程中踩到的坑
这里简单记录一下,学习spring的时候碰过的异常: 异常:org.springframework.beans.factory.BeanDefinitionStoreException: Unexpe ...
- 网站改版应对google
客户要求修改网站,这会给我们带来问题!为了保留他的网站权重和关键字排名,我们必须在做网站修改工作之前分析他原来网站的连接结构和标题,这样我才能更好地保证他原来网站的整体权重不会有大的变化!以下是我们根 ...
- CentOS7 安装并配置MySQL8.0
安装环境 linux版本:CentOS 7.6 x64 Mysql:8.0 在CentOS中默认安装有MariaDB,但是我们需要的是MySQL,安装MySQL可以覆盖MariaDB. MariaDB ...