L
lxchjun
Unregistered / Unconfirmed
GUEST, unregistred user!
MIDAS FOR JAVA
主要解决两个问题:
1.将java从数据库中读出来的数据打包成ClientDataSet可以读取的数据包。接口规划如下:
函数功能: 查询单个数据集
函数声明: function SelectData(ACDS: TClientDataSet;const ASelectText: string):Boolean;
参数说明: -------------------------------------------------------
参数名称 描述
-------------------------------------------------------
ACDS 存放查询结果集的TClientDataSet
-------------------------------------------------------
ASelectText 要发送的单条查询语句
-------------------------------------------------------
函数说明: 成功返回[true](包括只有数据元的空数据集);失败返回[false]
此函数一般用于一次要返回大量数据;
用例: Result:=SelectData(cdsTemp,'SELECT * FROM CRM_CUSTOMER');这个语句的意思是:
发送一个查询语句到java AppServer,如果命令能正确执行,那么java AppServer会把查询的结果集打包发送到客户端事先创建好的cdsTemp中.
*************************************************************************************************************************
函数功能:一次查询返回多个数据集的数据
函数声明:function SelectDatas(ACDS:array of TClientDataSet;const ASelectText: TStringList):Boolean;
参数说明:-------------------------------------------------------
参数名称 描述
-------------------------------------------------------
ACDS 存放查询结果集的多个TClientDataSet列表
-------------------------------------------------------
ASelectText 要发送的多条查询语句列表
-------------------------------------------------------
函数说明:成功返回[true](包括只有数据元的空数据集);失败返回[false]
用例:
var
sSql:string;
sList:TStringList;
cdsTemp1,cdsTemp2,cdsTemp3:TClientDataSet;
begin
try
cdsTemp1:=TClientDataSet.Create(nil);
cdsTemp2:=TClientDataSet.Create(nil);
cdsTemp3:=TClientDataSet.Create(nil);
sList:=TStringList.Create;
try
sSql:='SELECT * FROM Table1';
sList.Add(sSql);
sSql:='SELECT * FROM Table2';
sList.Add(sSql);
sSql:='SELECT * FROM Table3';
sList.Add(sSql);
//把第一条查询语句的结果集存放到cdsTemp1,把第二条查询语句的结果集存放到cdsTemp2,依次类推存放顺序
SelectDatas([cdsTemp1,cdsTemp2,cdsTemp3],sList);
finally
FreeAndNil(cdsTemp1);
FreeAndNil(cdsTemp2);
FreeAndNil(cdsTemp3);
FreeAndNil(sList);
end;
except
end;
end;
2.将ClientDataSet中被修改和编辑的数据通过Java保存到数据库中。
函数功能: 更新多个数据集
函数声明: function ApplyUpdates(const ATableNames: array of string ;
ACDS:array of TClientDataSet): Boolean;
参数说明: -------------------------------------------------------
参数名称 描述
-------------------------------------------------------
ACDS 要更新的数据集列表
-------------------------------------------------------
ATableNames 要更新的表名列表
-------------------------------------------------------
函数说明: 成功返回[true];失败返回[false]
表名列表与数据集列表应该一一对应
用例: Result:=ApplyUpdates(['TableName1','TableName2','TableName3','TableName4'],
[cds1,cds2,cds3,cds4]);
本用例会根据数据集列表中每个数据集的修改信息自动生成相应SQL语句,然后把所有的SQL语句一起发送到java AppServer进行事务处理.
这样就完成了操作界面到SQL语句之间的直接映射.
关于MIDAS FOR JAVA的说明:
1.其实现包括delphi和java两部分的实现代码;
2.delphi端是基于阻塞模式的Indy通信套件,选择tcp/ip作为通信协议(可选其他);还包括许多其他接口函数供实际开发使用;
3.java端的具体实现其实是一个ServerSocket监听客户端发送的命令,并解析客户端的命令;然后分派处理(参考command模式);通过jdbc与数据库交互;
4.其实只要数据到了java端,那么只要你愿意你可以选择任意的中间件技术:weblogic,websphere,jboss等等作为应用服务器;
5.以上系统框架已在大型商业系统成功运用;
请有兴趣的朋友到以下地址下载demo:
http://download.csdn.net/down/222211
主要解决两个问题:
1.将java从数据库中读出来的数据打包成ClientDataSet可以读取的数据包。接口规划如下:
函数功能: 查询单个数据集
函数声明: function SelectData(ACDS: TClientDataSet;const ASelectText: string):Boolean;
参数说明: -------------------------------------------------------
参数名称 描述
-------------------------------------------------------
ACDS 存放查询结果集的TClientDataSet
-------------------------------------------------------
ASelectText 要发送的单条查询语句
-------------------------------------------------------
函数说明: 成功返回[true](包括只有数据元的空数据集);失败返回[false]
此函数一般用于一次要返回大量数据;
用例: Result:=SelectData(cdsTemp,'SELECT * FROM CRM_CUSTOMER');这个语句的意思是:
发送一个查询语句到java AppServer,如果命令能正确执行,那么java AppServer会把查询的结果集打包发送到客户端事先创建好的cdsTemp中.
*************************************************************************************************************************
函数功能:一次查询返回多个数据集的数据
函数声明:function SelectDatas(ACDS:array of TClientDataSet;const ASelectText: TStringList):Boolean;
参数说明:-------------------------------------------------------
参数名称 描述
-------------------------------------------------------
ACDS 存放查询结果集的多个TClientDataSet列表
-------------------------------------------------------
ASelectText 要发送的多条查询语句列表
-------------------------------------------------------
函数说明:成功返回[true](包括只有数据元的空数据集);失败返回[false]
用例:
var
sSql:string;
sList:TStringList;
cdsTemp1,cdsTemp2,cdsTemp3:TClientDataSet;
begin
try
cdsTemp1:=TClientDataSet.Create(nil);
cdsTemp2:=TClientDataSet.Create(nil);
cdsTemp3:=TClientDataSet.Create(nil);
sList:=TStringList.Create;
try
sSql:='SELECT * FROM Table1';
sList.Add(sSql);
sSql:='SELECT * FROM Table2';
sList.Add(sSql);
sSql:='SELECT * FROM Table3';
sList.Add(sSql);
//把第一条查询语句的结果集存放到cdsTemp1,把第二条查询语句的结果集存放到cdsTemp2,依次类推存放顺序
SelectDatas([cdsTemp1,cdsTemp2,cdsTemp3],sList);
finally
FreeAndNil(cdsTemp1);
FreeAndNil(cdsTemp2);
FreeAndNil(cdsTemp3);
FreeAndNil(sList);
end;
except
end;
end;
2.将ClientDataSet中被修改和编辑的数据通过Java保存到数据库中。
函数功能: 更新多个数据集
函数声明: function ApplyUpdates(const ATableNames: array of string ;
ACDS:array of TClientDataSet): Boolean;
参数说明: -------------------------------------------------------
参数名称 描述
-------------------------------------------------------
ACDS 要更新的数据集列表
-------------------------------------------------------
ATableNames 要更新的表名列表
-------------------------------------------------------
函数说明: 成功返回[true];失败返回[false]
表名列表与数据集列表应该一一对应
用例: Result:=ApplyUpdates(['TableName1','TableName2','TableName3','TableName4'],
[cds1,cds2,cds3,cds4]);
本用例会根据数据集列表中每个数据集的修改信息自动生成相应SQL语句,然后把所有的SQL语句一起发送到java AppServer进行事务处理.
这样就完成了操作界面到SQL语句之间的直接映射.
关于MIDAS FOR JAVA的说明:
1.其实现包括delphi和java两部分的实现代码;
2.delphi端是基于阻塞模式的Indy通信套件,选择tcp/ip作为通信协议(可选其他);还包括许多其他接口函数供实际开发使用;
3.java端的具体实现其实是一个ServerSocket监听客户端发送的命令,并解析客户端的命令;然后分派处理(参考command模式);通过jdbc与数据库交互;
4.其实只要数据到了java端,那么只要你愿意你可以选择任意的中间件技术:weblogic,websphere,jboss等等作为应用服务器;
5.以上系统框架已在大型商业系统成功运用;
请有兴趣的朋友到以下地址下载demo:
http://download.csdn.net/down/222211