三层结构,应用服务端来处理新增,修改,删除...等动作,好多的方式,哪种处理好呢???(75分)

  • 主题发起人 主题发起人 jackeysb
  • 开始时间 开始时间
J

jackeysb

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在学习三层结构,试了一些做法,例如我在做一个transcation的test时,在服务端定义一个接口过程update,在客户端通过dcomconnection.appserver来调用,update的代码如下:procedure Ttest_pack.updata(var custvar: OleVariant);
var
errcount:integer;
begin
database1.StartTransaction;
try
.....
custvar:=DataSetProvider1.ApplyUpdates(custvar,0,errcount);
.....
except
.....
end;
end;
1。这是对一个表操作,如果客户端要对多个表都要同时操作,那不是要写多个update了,这样做好像不合理吧。
2。我想是不是可在服务端定义一些不是接口的过程(也就是不通过 type library来添加的过程)来处里,这样可吗?能不能给段代码来学习学习?
3。服务端怎样做好新增,修改,删除...等,大家给点意见,如果数据量不大,一次最多20条。各位能不能多给给意见???
 
没回应???各位大虾给点意件啊?百忙之中给个代码也好啊??
 
同感。因为没有找到好的方法,目前我都是在客户端利用sql和存储进程解决数据操作。正如楼主在第一小点提出,如果通过调用中间层的方法来处理数据操作,那得要多少个方法才行呀。有一条途径,就是在中间层建立业务对象,不过我还在听课阶段。
 
各位都来提提,您在处理时用的方法??
 
我一般都在客户端呼叫服务器的远程方法,然后在服务器端用sql语句更新
 
to 迷糊:
在客户端呼叫服务器的远程方法,我知是个好的方法,但我在想,如果多个表同时操作的话,那不是都要对应写一个方法了??而且都代码大致相同。
我这样想对吗??望大大能在祥细说说,如服务端有5个TDataSetProvider分别向客户段5个tdbgrid提供数据,5个tclientdataset都增加几条记录,那不是要有5个方法了???
望各位大大也解说解说
 
如果这些表是主从关系,可以考虑用nested。
 
这些表都不是主从关系的,只有一个字段相同的
 
我写的服务器端的transaction格式好像不是这样的,用的是CreateTransactionContextEx,充分利用COM+提供的机制。
 
我用的clientdataset的commandtext的方法来实现,感觉还不错、,
这样可以执行自己需要的sql,并且,简单操作可以applyupdates()就可以了
 
其实您已经写出了代码
var
errcount:integer;
begin
database1.StartTransaction;
try
.....
DataSetProvider1.ApplyUpdates(custvar1,0,errcount);
DataSetProvider2.ApplyUpdates(custvar2,0,errcount);
.....
DataSetProviderN.ApplyUpdates(custvarN,0,errcount);
.....
except
.....
end;
end;
 
尽量不用DCOMConnection,DCOMConnectin有一些问题,最好直接调用 IAppServer接口
使用IAppServer更新,又方便又安全,
另外,数据集,最好使用槽状数据,这样多表更新的操作也很简单,并且是一个事务,
在MtsDataModule 中摆好书聚集控件,并社好数据际之间的关系
 
yinxianglong,对你的说法不敢苟同,巢状结构是最后不要用的,尤其是查询,你会发现
速度不怎么样
 
to kevinhe:
照您的方法,这个接口过程,我应该怎样定义呢,procedure Ttest_pack.updata(var custvar: OleVariant);
中的custvar参数怎样定义?客户端怎样调用呢?这样做的话,不是每个DataSetProvider都要做一次applyupdates,那我在查询时,并不对每个表都要修改,您能说祥细点吗?谢您了!!
 
关键在于软件的设计,也就是如何把业务逻辑实现成具体的类,并对这些类进行具体方法的实现,把一些业务实体划分开,并由控制类进行调用,由客户端进行最少的调用,在服务器上完成复杂的运算.
 
我也推荐 用 巢状, 只取你想取的数据不会慢。
 
to yinxianglong:能不能给我个例子代码,急需学习,寄到我的邮箱也可jackeysb@163.com
小弟先谢过了!!
还有我在处理更新不同的数据表,这些数据表的输入数据的来源都不一样,比如来自不同的
dbgrid,可用一个接口过程来处理吗?我试做了一写测试,老做不好,哪位大大能给个例子吗??
 
后退
顶部