前面我们讲了如何使用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 访问数据(客户端)的更多相关文章

  1. 在datasnap 中使用unidac 访问数据(服务器端)

    从delphi 6 开始,datasnap 作为delphi 自带的多层框架,一直更新到最新的delphi 10.3 .同时逐步增加了很多新的功能 ,比如支持REST 调用,支持 IIS ,apach ...

  2. .NET Core2.0 MVC中使用EF访问数据

    使用环境:Win7+VS2017 一.新建一个.NET Core2.0的MVC项目 二.使用Nuget添加EF的依赖 输入命令:Install-Package Microsoft.EntityFram ...

  3. unidac 访问sql server 字符查询参数失效问题及解决办法

    在帮朋友调试kbmmw 服务器的时候,发现用uindac 访问sql server作为后台时,碰见一个问题. 具体如下: cx.Close; cx.sql.add('select * from T w ...

  4. 在 SharePoint 2010 中访问数据

    转:http://blog.banysky.net/?p=81001 数据访问的关键方法有哪些? | 使用查询类 | 使用 SPQuery | 使用 SPSiteDataQuery | 使用 LINQ ...

  5. 【C#】访问泛型中的List列表数据

    光看标题的确不好说明问题,下面描述一下问题场景: 已知后端自定义的返回的Json数据结构如下: response: { "message": "返回成功", & ...

  6. HTML5中两种方法实现客户端存储数据

    HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 之前,这些都是由 coo ...

  7. 【转】在Spring中基于JDBC进行数据访问时怎么控制超时

    http://www.myexception.cn/database/1651797.html 在Spring中基于JDBC进行数据访问时如何控制超时 超时分类 超时根据作用域可做如下层级划分: Tr ...

  8. Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅

    在上一篇Spring中使用JdbcTemplate访问数据库中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端 ...

  9. vue中访问数据接口的配置

    业务API接口地址: http://localhost:3816/api/ 前端UI浏览地址:http://127.0.0.1:8080/#/home 由于同源策略的问题: 需要配置代理: 在开发环境 ...

随机推荐

  1. oracle 查看处理锁表

    --查出sid,serial#select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where ...

  2. php通过imap获取腾讯企业邮箱信息后的解码处理

    最近需要在项目开发的oa中集成一个收发腾讯企业邮箱邮件的功能,今天做到了获取收件箱内容部分,imap如何获取就不写了,百度一堆,主要是关于内容的解码 主要以邮件主题解码为主,腾讯企业邮返回的数据主要有 ...

  3. [Docker] 容器开发环境最佳实践理论

      保持 image 小       选择合适的 base image.       使用 multi-stage 构建. https://docs.docker.com/develop/develo ...

  4. jdk-8u181-docs.chm -- 制作时间2018年8月12日

    为了方便查阅,自己做了一个JDK8的chm文件:jdk-8u181-docs.chm    密码: g675 chm制作工具 :chmwriter 目录:

  5. Homework:小写字母转大写字母

    // 功能: // 从键盘上输入单个字符 // 如果是小写字母,则转换成大写后输出 // 否则,什么也不做,原样输出 #include <stdio.h> int main() { cha ...

  6. k8s Docker私有仓库认证

    使用过K8s的小伙伴肯定会遇到一个问题,我们在使用自有的Docker仓库的时候都需要先登录用户名和密码,但是如果使用K8S怎么配置密码呢?在secret中有一个类型是docker-registry我们 ...

  7. yii2.0 url美化-apache服务器

    //配置内容 'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => false, //不启用严格 ...

  8. 树的遍历——c#实现

    树作为一种重要的非线性数据结构,以分支关系定义其层次结构,在客观世界中应用广泛.通过对树遍历,将树进行线性化处理,即遍历的结果是将非线性结构的树种节点排列成一个线性序列.其中,最常见的遍历方式包括先序 ...

  9. Leetcode1000 合并石头的最低成本 区间DP

    有 N 堆石头排成一排,第 i 堆中有 stones[i] 块石头. 每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆石头的总数. 找出把所有石头合并成一堆的最低成 ...

  10. 电话号自动识别之bug解决汇总

    今天测试一个defect: “联系我们”页显示的电话号码,在不同浏览器显示效果不统一,有些浏览器自动识别电话号码并强制添加了样式. 网络搜索发现,其它website 也有类似问题,例如:http:// ...