惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
博客园_首页
M
MIT News - Artificial intelligence
雷峰网
雷峰网
GbyAI
GbyAI
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
S
SegmentFault 最新的问题
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
V
Visual Studio Blog
月光博客
月光博客
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队

博客园 - xalion

Delphi 13.1 内置支持 SSE (Server-Sent Events) Ubuntu 上 安装 sql server 2022 delphi 12.2 配置Linux 开发环境 Embarcadero 发布开源Bloodshed Dev C++ 分支 实战Devexpress FMX Grid 在ubuntu 上使用wine 运行Delphi win32 应用 苹果体 Delphi 10.4 新功能介绍 如何在unidac 中执行一次查询获得多个数据集? 初识ubuntu上的docker PostgreSQL 基本数据类型及常用SQL 函数操作 一步一步从PostgreSQL安装到delphi 访问 DLL Injection with Delphi(转载) 使用FMXlinux 开发linux 桌面应用 推荐一套免费跨平台的delphi 哈希及加密算法库 提高sqlite 的运行性能(转载) 使用unidac 连接FB 3.0 (含嵌入版) 在datasnap 中使用unidac 访问数据(服务器端) More x64 assembler fun-facts–new assembler directives(转载) x64 assembler fun-facts(转载)
在datasnap 中使用unidac 访问数据(客户端)
xalion · 2019-01-05 · via 博客园 - xalion

  前面我们讲了如何使用unidac 在datasnap 的服务端访问数据库,今天大概讲一下客户端如何访问

前面做的服务器?其实这个客户端适合任何datasnap 服务端。

首先我们建一个应用,并加入一个TDatamodule.

加入TSQLConnection 控件,并选择driver 为datasnap

 再放置一个TSqlServerMethod,设置 sqlconnection属性。然后打开我们前面做的服务端,就可以在选择服务端的 方法名了。

我们现在主窗体里面调用一下这个服务器方法,代码就非常简单了。

procedure TForm1.Button1Click(Sender: TObject);
begin
  dmf.echo_m.Params[0].AsString:=edit1.Text;
  dmf.echo_m.ExecuteMethod;
  memo1.Lines.Add( dmf.echo_m.Params[1].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