在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 由于同源策略的问题: 需要配置代理: 在开发环境 ...
随机推荐
- sql存储过程调用示例
1.配置文件: <connectionStrings> <add name="constr" connectionString="data source ...
- JSFL元件类型判断 转载于 https://blog.csdn.net/linking530/article/details/8364600
//获取舞台上第一层第一帧上的全部元件 var els = fl.getDocumentDOM().getTimeline().layers[0].frames[0].elements; //遍历元件 ...
- 用VS2015编译pjsip的工程pjproject-vs14
先去官网下载最新的源码包,我用的版本是2.7.1 . 将源代码解压后,在路径:pjproject-3.7.1\pjlib\include\pj 中创建新文件config_site.h,内容如下: #i ...
- CentOS6.3上安装与配置nginx+php+mysql环境
1. 目前nginx采用是源码包安装的方式(yum安装失败),下载地址:http://nginx.org/en/download.html 我这里的安装包是:nginx-1.12.0.tar.gz 2 ...
- Bootstrap col-md
col-md 将中等屏幕分成12份, 所占的比列 offest 补偿,向左偏移 push 从左侧往右侧推8列 pull 往左侧拉2列
- Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 1) C(二分+KMP)
http://codeforces.com/contest/1129/problem/C #include<bits/stdc++.h> #define fi first #define ...
- mac 下直接给docker容器加映射 mysql 为例
如果你是下面这种情况,本文可能回给你一些帮助 os是Mac,docker中已有mysql容器,并且已经有数据,但是没有设置映射,想要从主机连接docker 中的mysql,以便更好的查看,增加,删除数 ...
- Python数据分析学习(一):Numpy与纯Python计算向量加法速度比较
import sys from datetime import datetime import numpy as np def numpysum(n): a = np.arange(n) ** 2 b ...
- FOB注意事项
1. FOB是我们作为贸易公司去联系物流公司将货送到码头,缴纳FOB cost 以后,海关安排码头的人送到船上. 2.在这之前,买方自己订船,然后发给卖方入货通知,卖方安排发货. 3.FOB cost ...
- UVA 679 二叉树
题目链接:https://vjudge.net/problem/UVA-679 参考自:刘汝佳的紫书 思路: 我们发现,对于每一颗子树,假如小球是第奇数次到达这颗子树的根节点时,那么此时应该向左子树走 ...