客户端: SoapConnection1,ClientDataSet1
SoapConnection1.URL:=URLList.Text+'/soap/IDataMod';
SoapConnection1.Open;
if (SoapConnection1.GetSOAPServer as IDataMod).doSQL('select * from tree') then
ClientDataSet1.Open;server端:ADOConnection1,ADODataSet1,DataSetProvider1
function TDataMod.doSQL(SQL:string):boolean;
begin
try
if ADOConnection1.Connected then
begin
ADODataSet1.Close;
ADODataSet1.CommandText := sql;
ADODataSet1.Open;
result :=true;
end else
begin
result :=false;
end;
except
result :=false;
end;
end;问:为什么调用doSQL()时出现“ADODataSet1.commandText未赋值”?
SoapConnection1.URL:=URLList.Text+'/soap/IDataMod';
SoapConnection1.Open;
if (SoapConnection1.GetSOAPServer as IDataMod).doSQL('select * from tree') then
ClientDataSet1.Open;server端:ADOConnection1,ADODataSet1,DataSetProvider1
function TDataMod.doSQL(SQL:string):boolean;
begin
try
if ADOConnection1.Connected then
begin
ADODataSet1.Close;
ADODataSet1.CommandText := sql;
ADODataSet1.Open;
result :=true;
end else
begin
result :=false;
end;
except
result :=false;
end;
end;问:为什么调用doSQL()时出现“ADODataSet1.commandText未赋值”?
解决方案 »
- 位操作
- 关于sql语句处理记录集的问题(在线)
- 打开窗口报错?!
- 请问delpi开发用什么库好
- 我想做一个从TGraphicobject继承的控件,可是控件的字体.........
- 出库单,如库单,发票的打印整么解决
- ***************DBGrid中,当数据库处于编辑状态时,鼠标单击另一条记录,默认post,如何屏蔽调他。
- 关于界面设计的问题xml ini
- 求TOleEnum与TString之间互相转换的函数。
- 我用delphi开发了一个service,但如何用程序代码将该service application加入到nt/2000的服务中?
- 求救高手:fastreport的一个问题
- 现在开发一个组件,组件中有一个类,类中有一个变量,该变量根据运行时的情况不同而不同,在组件中的另外一个文件中(unit),访问该类中
SoapConnection1.Open;
if (SoapConnection1.GetSOAPServer as IDataMod).doSQL('select * from tree') then
ClientDataSet1.Open;GetSOAPServer将创建一个新的服务端Instance,所以你的doSQL将赋值给那个新的Instance,而原来的Instance的CommandText仍然为空,所以ClientDataSet Open的时候会出错。
建议改用DataRequest,而不是用doSQL,因为根据服务端实现的不同,服务端可能是无状态的,因为doSQL和Open是两个独立的请求,在两次请求之间,服务端实例可能被释放重建,或是被Pool(ISAPI)。
这种思路本来就是错的。