相交资料:

http://blog.csdn.net/shuaihj/article/details/6129131
http://www.cnblogs.com/hnxxcxg/p/4007876.html
http://www.cnblogs.com/hnxxcxg/p/4008789.html
http://www.dfwlt.com/forum.php?mod=viewthread&tid=729 (生成Unit2)

PS:

右键点击TSQLConnection选择“Generate DataSnap client classes”生成,Uuit2。

服务端实例:

 unit ServerMethodsUnit1;

 interface

 uses System.SysUtils, System.Classes, System.Json,
Datasnap.DSServer, Datasnap.DSAuth, DataSnap.DSProviderDataModuleAdapter,
Datasnap.Provider, FireDAC.Stan.ExprFuncs, FireDAC.Phys.SQLiteDef,
FireDAC.UI.Intf, FireDAC.VCLUI.Wait, FireDAC.Stan.Intf, FireDAC.Stan.Option,
FireDAC.Stan.Error, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool,
FireDAC.Stan.Async, FireDAC.Phys, FireDAC.Stan.Param, FireDAC.DatS,
FireDAC.DApt.Intf, FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet,
FireDAC.Comp.Client, FireDAC.Comp.UI, FireDAC.Phys.SQLite,
FireDAC.Stan.Storage,//未知
FireDAC.Stan.StorageBin,//未知
FireDAC.Stan.StorageJSON,//未知
FireDAC.Stan.StorageXML,//未知
Data.FireDACJSONReflect;//TFDJSONDataSets返回表使用 type
TServerMethods1 = class(TDSServerModule)
DataSetProvider1: TDataSetProvider; //要增加的控件
FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink;//要增加的控件
FDGUIxWaitCursor1: TFDGUIxWaitCursor; //要增加的控件
FDConnection1: TFDConnection; //要增加的控件
FDQuery1: TFDQuery;//要增加的控件
DataSource1: TDataSource;//要增加的控件
private
{ Private declarations }
public
{ Public declarations }
function EchoString(Value: string): string;
function ReverseString(Value: string): string;
//用户查询数据
function GetDataTable(Value: string): TFDJSONDataSets;
//用户删除记录
function DeleteData(Value:string):string; end; implementation {$R *.dfm} uses System.StrUtils; function TServerMethods1.EchoString(Value: string): string;
begin
Result := Value;
end; function TServerMethods1.ReverseString(Value: string): string;
begin
Result := System.StrUtils.ReverseString(Value);
end; //用户查询数据
function TServerMethods1.GetDataTable(Value: string): TFDJSONDataSets;
begin
//指定数据库
FDConnection1.DriverName := 'SQLite';
FDConnection1.Params.Add('Database=E:\diarydate.db');
//控件的联接情况
FDQuery1.Connection := FDConnection1;
DataSource1.DataSet := FDQuery1;
//用户查询
FDQuery1.SQL.Text := Value;//SELECT * FROM tproject
//打开数据集
FDConnection1.Open();
FDQuery1.Open();
//建立多个数据集返回集
Result := TFDJSONDataSets.Create;
//你也可以给自己的数据集起外名字
//TFDJSONDataSetsWriter.ListAdd(Result, 'A123', FDQuery1);
TFDJSONDataSetsWriter.ListAdd(Result, FDQuery1);
end; //用户删除记录
function TServerMethods1.DeleteData(Value: string): string;
begin
//代表空
Result := '';
//指定数据库
FDConnection1.DriverName := 'SQLite';
FDConnection1.Params.Add('Database=E:\diarydate.db');
//控件的联接情况
FDQuery1.Connection := FDConnection1;
DataSource1.DataSet := FDQuery1;
//用户查询
FDQuery1.SQL.Text := Value;//delete from tproject where fid=2
//打开数据集
FDConnection1.Open();
FDQuery1.ExecSQL;
//代表完成
Result := '';
end; end.

客户端实例:

 unit Unit1;

 interface

 uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DBXDataSnap, IPPeerClient,
Data.DBXCommon, Data.DB, Data.SqlExpr, Data.FMTBcd, Vcl.StdCtrls,
FireDAC.Stan.Intf, FireDAC.Comp.DataMove,
FireDAC.Stan.Option, FireDAC.DatS, FireDAC.Phys.Intf, FireDAC.DApt.Intf,
FireDAC.DApt,
FireDAC.Comp.Client,
FireDAC.Stan.Param, FireDAC.Stan.Error,
FireDAC.Comp.DataSet, Vcl.Grids, Vcl.DBGrids, Datasnap.DBClient,
Datasnap.DSConnect,
Unit2,//DataSnap单元
Data.FireDACJSONReflect,//TFDJSONDataSets使用
FireDAC.Stan.StorageJSON,//未知
FireDAC.Stan.StorageBin, //未知
FireDAC.Stan.StorageXML,//未知
FireDAC.Stan.Storage, //未知
Datasnap.Provider; type
TForm1 = class(TForm)
SQLConnection1: TSQLConnection; //要增加的控件
SqlServerMethod1: TSqlServerMethod; //要增加的控件
button1: TButton; //要增加的控件
button2: TButton; //要增加的控件
FDStanStorageJSONLink1: TFDStanStorageJSONLink; //要增加的控件
FDStanStorageBinLink1: TFDStanStorageBinLink; //要增加的控件 FDMemTable1: TFDMemTable; //要增加的控件
DBGrid1: TDBGrid; //要增加的控件
DataSource1: TDataSource; //要增加的控件
Button3: TButton; //要增加的控件
procedure button1Click(Sender: TObject);
procedure button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.button1Click(Sender: TObject);
begin
SqlServerMethod1.ParamByName('Value').AsString:='Hello world';
SqlServerMethod1.ExecuteMethod;
ShowMessage(SqlServerMethod1.ParamByName('ReturnParameter').AsString);
end; procedure TForm1.button2Click(Sender: TObject);
var
oDSList: TFDJSONDataSets;
oDataModel: TServerMethods1Client;
begin
try
//连接指定IP和Port的应用服务器
SQLConnection1.Close;
//这我用的是本机的,所以就没有写
//SQLConnection1.Params.Values['HostName'] := edtIP.Text;
//SQLConnection1.Params.Values['Port'] := edtPort.Text;
try
SQLConnection1.Open;
try
//创建应用服务器上的Sample Methods在客户端的实现类
oDataModel := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
//执行服务器上的方法
FDMemTable1.Close;
oDSList := oDataModel.GetDataTable('SELECT * FROM tproject');
FDMemTable1.AppendData(TFDJSONDataSetsReader.GetListValue(oDSList, ));
FDMemTable1.Open;
finally
oDataModel.Free;
end;
except
on E: Exception do
ShowMessage(E.Message);
end;
finally
SQLConnection1.Close;
end;
end; procedure TForm1.Button3Click(Sender: TObject);
var
oDataModel: TServerMethods1Client;
bIsTrue: string;
begin
try
//连接指定IP和Port的应用服务器
SQLConnection1.Close;
//这我用的是本机的,所以就没有写
//SQLConnection1.Params.Values['HostName'] := edtIP.Text;
//SQLConnection1.Params.Values['Port'] := edtPort.Text;
try
SQLConnection1.Open;
try
//创建应用服务器上的Sample Methods在客户端的实现类
oDataModel := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
bIsTrue := oDataModel.DeleteData('delete from tproject where fid=2');
ShowMessage(bIsTrue);
finally
oDataModel.Free;
end;
except
on E: Exception do
ShowMessage(E.Message);
end;
finally
SQLConnection1.Close;
end;
end; end.

DataSnap与FireDAC三层的更多相关文章

  1. 论DATASNAP结合FIREDAC的使用方法

    论DATASNAP结合FIREDAC的使用方法 自DELPHI XE5开始引入FIREDAC数据引擎以来,FIREDAC就正式成为了官方的数据引擎.一直到XE10.1 UPDATE1,据笔者观察,FI ...

  2. Delphi 使用 Datasnap 的几种三层应用技术总结

    Delphi 使用 Datasnap 进行三层应用开发,积累了几种技术,总结如下: 1.(推荐!)在 Datasnap 服务端 使用 TDatasetProvider,客户端 使用   TDSProv ...

  3. DataSnap 多层返回数据集分析FireDAC JSON

    采用服务器返回数据,一种是返回字符串数据例如JSON,跨平台跨语言,任何语言调用都支持兼容,类似WEBService. 第二种是紧密结合c++builder语言,传输DataSet,可以是Client ...

  4. FireDAC 接占线导致另一个 hstmt DataSnap

    [FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt 同样的程序,在2台win10 正常,1台win10 报连 ...

  5. 基于Delphi的三层数据库系统的实现方法

    基于Delphi的三层数据库系统的实现方法   1  引言 当前的数据库应用系统中,按其结构划分为两类,一类是两层结构的数据库应系统,另一类是多层结构的数据库应用系统. 两层结构的数据库应用系统包括客 ...

  6. 客户端如何连接 DataSnap Server 调用服务的方法

    一般http访问的地址是 http://localhost:8099/datasnap/rest/TServerMethods1/EchoString/abc 一.用FDConnection1连接Da ...

  7. Android开发数据库三层应用-DataSnap

    Android开发数据库三层应用-DataSnap http://www.2ccc.com/news/Html/?1517.html 核心提示:我觉得Delphi最强大的的功能之一就是开发数据库三层应 ...

  8. DATASNAP为支持FIREDAC而增加的远程方法的数据类型TFDJSONDataSets

    前面的博客提到用FIREDAC全面替代COM那一套东西:DATAPROVIDER,OLEVARIANT,CLIENTDATASET,DBEXPRESS... 显然,DATASNAP的远程方法必须增加对 ...

  9. 一个例子说明如何在DataSnap中使用FireDAC

    一.FireDAC调用DataSnap远程方法查询数据示例 1.服务端使用FDQUERY查询数据并返回TDATASET: function TServerMethods1.GetData(var sq ...

随机推荐

  1. Ubuntu下MySQL数据库安装与配置与卸载

    安装: sudo apt-get install mysql-server mysql-client 一旦安装完成,MySQL 服务器应该自动启动.您可以在终端提示符后运行以下命令来检查 MySQL ...

  2. Kaleidoscope for mac

    mac下的对比工具Kaleidoscope,是一款不错的对比工具,界面被广大用户所喜爱. window下使用beyond compare 3,具体设置步骤,请见:http://www.cnblogs. ...

  3. POJ 3253 Fence Repair【二叉堆】

    题意:给出n根木板,需要把它们连接起来,每一次连接的花费是他们的长度之和,问最少需要多少钱. 和上一题果子合并一样,只不过这一题用long long 学习的手写二叉堆的代码,再好好理解= = #inc ...

  4. 前端SPA框架一些看法

    说起前端框架,我个人主张有框架不如无框架,这个观点要先从框架和库的区别说起. 我所理解的库,解决的是代码或是模块级别的复用或者对复杂度的封装问题;而框架,更多的是对模式级别的复用和对程序组织的规范,这 ...

  5. POJ 3084 Panic Room (最小割建模)

    [题意]理解了半天--大意就是,有一些房间,初始时某些房间之间有一些门,并且这些门是打开的,也就是可以来回走动的,但是这些门是确切属于某个房间的,也就是说如果要锁门,则只有在那个房间里才能锁. 现在一 ...

  6. Java [Leetcode 257]Binary Tree Paths

    题目描述: Given a binary tree, return all root-to-leaf paths. For example, given the following binary tr ...

  7. 构造函数后面的base()

    先执行父类的对应的构造函数,再执行当前的构造函数. 关于子类对象的构造函数和父类构造函数的执行顺序 以下内容转自:http://blog.csdn.net/todototry/article/deta ...

  8. javascript将json转字符串

    例如: var last=obj.toJSONString(); //将JSON对象转化为JSON字符 或者 var last=JSON.stringify(obj); //将JSON对象转化为JSO ...

  9. U盘安装Centos5.3

    一.制作 U 盘启动引导盘 1. 插上 U 盘,打开 UltraISO 软件,打开CentOS-5.3-i386-bin-DVD.iso 文件: 2.点启动--写入硬盘镜像,在硬盘驱动器里面选择你的 ...

  10. subclipse svn 在64位win7下报Failed to load JavaHL Library