New Page 1
1.一般简单的三层结构设计方式:
Remote Data Module服务器
数据库
Query组件
DataSetProvider组件
客户端应用程序
DCOM组件
ClientDataSet组件
现在一般介绍三层结构大多数使用上面的数据模型进行讲解,通过DataSource组件连接ClientDataSet组件,然后通过数据感知控件连接DataSource组件,来进行对数据库数据的访问。这样就使得数据库服务器、应用服务器和应用程序之间的联系过于紧密,如果其中一个做了改动,其他的都要跟着改动,对于系统的升级与维护带来很多不便。
2.新的三层结构设计模式:
Remote Data Module服务器
数据库
Query组件
DataSetProvider组件
客户端应用程序
DCOM组件
ClientDataSet组件
上面是我们现在采用的三层结构模式,它不通过DataSetProvider组件来传递数据,而是通过Remote
Data Module服务器所提供的Interface来进行数据的传递。这样就使得应用程序完全与数据库服务器没有任何关系,对整个系统的升级与维护都带来极大的好处。
对于集合数据,由于Interface的返回值可以是OLEVarient类型,因此我们可以创建ClientDataSet来进行集合数据的传递。
3.部分源程序
//函数1:创建ClientDataSet
procedure CreateCds(const Ds: TDataSet;
var Cds: TClientDataSet);
var
I:
Integer;
begin
Cds
:= TClientDataSet.Create(nil);
for
I := 0 to Ds.FieldCount - 1 do
begin
with Cds.FieldDefs.AddFieldDef do
begin
Name := Ds.FieldDefs[I].Name;
DataType := Ds.FieldDefs[I].DataType;
if DataType = ftAutoInc then
DataType := ftInteger;
Size := Ds.FieldDefs[I].Size;
end;
end;
Cds.CreateDataSet;
end;
//函数2:给ClientDataSet负值
procedure TransData(const Ds: TDataSet;
var Cds: TClientDataSet);
var
I:
Integer;
begin
if
Ds.RecordCount > 0 then
begin
Ds.First;
while not Ds.Eof do
begin
Cds.Insert;
for I := 0 to Ds.FieldCount - 1 do
Cds.FielDs[I].Value := Ds.FielDs[I].Value;
Cds.Post;
Ds.Next;
end;
end;
end;