这个方法运行很奇怪啊,程序中如果第一次调用(连续执行几次不同ASQLStr的调用),能成功执行. 然后在后面(其它窗口),再执行这个方法时,就提示错误了, //---------------------------------------------------------------------------------------------- 如果不是多线程用一个连接的话,应该没问题。另外,客户端代码有问题:try if dr <> nil then begin end; finally //dr=nil 的,也dr.free?? dr.Free; end;
然后在后面(其它窗口),再执行这个方法时,就提示错误了,
//----------------------------------------------------------------------------------------------
如果不是多线程用一个连接的话,应该没问题。另外,客户端代码有问题:try
if dr <> nil then
begin
end;
finally //dr=nil 的,也dr.free??
dr.Free;
end;
关于这个释放的问题,也纠结了好久,上次就发过一个贴了.服务端方法如果返回DBXReader的,DBXCommand不能释放,不管是用TComponent,还是TDataModule,还是TDSServerModule,释放了就错.
客户端的DBXReader也不能释放,如果释放了,当客户端退出程序时,就会造成FreeInstance错误.
Application.CreateForm(TfrmClientMain, frmClientMain);
Application.CreateForm(TdmClientModule, dmClientModule);
//ProcSystemInit; //千万别在这里调用服务端方法!!!
Application.Run;ProcSystemInit里调用了一些存放在数据库里的配置参数,调用了GetDataR(),这里调用本身没错,但是,程序运行后,如果再次调用这个GetDataR(),执行到FGetDataRCommand.ExecuteUpdate时就发生错误........
纠结的是另一台win8电脑上没有这个问题...........
最后偶然试下,在frmClientMain的Show事件里调用,OK了,虽然还没搞明白为什么