3层的ado存储过程参数提交是怎么做的?(40分)

  • 主题发起人 主题发起人 悟空1
  • 开始时间 开始时间

悟空1

Unregistered / Unconfirmed
GUEST, unregistred user!
3层的ado存储过程参数提交是怎么做的?换句话说怎么在3层中使用ado?
 
使用midas
 
使用midas,dcom等,ado被封装在中间层,不需要由客户端直接提交过程参数,客户
端提交的是中间件对象的参数,由中间件根据需要调用ado的存储过程
 
sherman,请给个例子吧
 
相当于就是客户端调用服务端方法,传入参数(或自定义结构)。
在服务端得到这些参数,然后赋值给存储过程的参数,调用存储过程。
Client:
DataServer := CoDataServer.CreateRemote('YourMachine');
DataServer.GetParamAndDoProc(a,b,c,d);
//服务端定义的方法,得到参数并执行存储过程
Server:
procedure CoDataServer.GetParamAndDoProc(a,b: Integer;
c,d : String);
begin
AdoStoredProc1.Parameters[1].Value := a;
AdoStoredProc1.Parameters[2].Value := b;
AdoStoredProc1.Parameters[3].Value := c;
AdoStoredProc1.Parameters[4].Value := c;
AdoStoredProc1.ExecProc;
end;
大体就是这样子了。
 
ganquan:你的例子很好
但是client端的DataServer := CoDataServer.CreateRemote('YourMachine');
是怎么用的?给个例子吧
DataServer.GetParamAndDoProc(a,b,c,d);
这里的abcd是否可以变为edit。text?
 
>>client端的DataServer := CoDataServer.CreateRemote('YourMachine');
服务端写组件,提供方法让客户端调用,这居是创建服务器上的组件实例。
具体的你可以参考李维的Ado/Mts/COM+那本书,讲的很好!
>>DataServer.GetParamAndDoProc(a,b,c,d);
这里的abcd是否可以变为edit。text?
这句是调用组件提供的方法,a,b,c,d只是参数,可以为任意简单类型,也可以全部
当成变体类型OleVariant来传递。所以当然可以传递字符串。
你可以定义组件方法的参数全部是Olevariant,然后调用时
client:
var a,b,c,d: OleVariant;
begin
a := Edit1.text;
b := Edit2.Text;
c := COmbobox1.ItemIndex;
d := Memo1.lines.text;
DataServer := CoDataServer.CreateRemote('YourMachine');
DataServer.GetParamAndDoProc(a,b,c,d);
 
接受答案了.
 
后退
顶部