在一个数据模块(dm)上有一个
ADOStoredProc: TADOStoredProc;我在程序中这样调用;
-------------------------------------
try
with dm.ADOStoredProc do
begin
.......
end;
finally
dm.ADOStoredProc.Free;
end
-------------------------------------
当第一次用dm.ADOStoredProc 时,执行成功
但第二次之后就不用再用dm.ADOStoredProc我觉得是因为用了dm.ADOStoredProc.Free;来释放dm.ADOStoredProc;
请问
1,dm.ADOStoredProc.Free;这样释放正确不?如果不正确,应该怎做?
2,在用dm.ADOStoredProc之前应该怎判断dm.ADOStoredProc是否被释放?类似这样的判断:
if FrmQueryBookFiles(窗体名) = nil then
begin
FrmQueryBookFiles := TFrmQueryBookFiles.Create(self);
FrmQueryBookFiles.Show;
end
ADOStoredProc: TADOStoredProc;我在程序中这样调用;
-------------------------------------
try
with dm.ADOStoredProc do
begin
.......
end;
finally
dm.ADOStoredProc.Free;
end
-------------------------------------
当第一次用dm.ADOStoredProc 时,执行成功
但第二次之后就不用再用dm.ADOStoredProc我觉得是因为用了dm.ADOStoredProc.Free;来释放dm.ADOStoredProc;
请问
1,dm.ADOStoredProc.Free;这样释放正确不?如果不正确,应该怎做?
2,在用dm.ADOStoredProc之前应该怎判断dm.ADOStoredProc是否被释放?类似这样的判断:
if FrmQueryBookFiles(窗体名) = nil then
begin
FrmQueryBookFiles := TFrmQueryBookFiles.Create(self);
FrmQueryBookFiles.Show;
end
解决方案 »
- 如何在delphi 7 中实现flash背景的透明或者运行一段时间,让flash动画隐藏?
- Merry Christmas !
- 请问各位,如何将一个窗口只显示在指定的窗口上。请帮助。
- 菜单->树
- 关于特殊字符的问题
- 关于indy应用,急!!100分
- 在北京求职,delphi,熟悉分布式数据库开发,windows消息处理,近两年的工作经验。请问月薪大约多少
- 我是程序员,老板现在要我做系统分析,我该如何开始呢?
- 开发组建能不能在不退出组件编译器的情况下调试?
- 不知为何我的线程老是半途出错??!
- 如果在进行udp编程时,如果想让程序既能发送,也能接收,该用什么控件,怎么作?
- 求教 DBGrid 的一个问题。
怎判断dm.ADOStoredProc是否被释放?
DM.ADOStoredProc.Free;
if not Assigned(DM.ADOStoredProc) then ShowMessage('ADOStoredProc已经被释放');
如果用DM.ADOStoredProc.Free;释放了,
但再次要用到DM.ADOStoredProc,怎再去创建呢?
ADOStoredProc1.Free;
ADOStoredProc1 := TADOStoredProc.Create(self); //创建
if Assigned(ADOStoredProc1) then ShowMessage('ADOStoredProc已经被创建');但是几乎所有你更改过的属性你都要在程序中重新的去赋值。
还有我就不明白,为什么非要释放呢?有这个必要吗?
try
except
end
来过滤异常
如果不释放DM.ADOStoredProc
再次使用DM.ADOStoredProc,可能导致程序.
CPU使用达100% 所以我用就了
try
......
finally
DM.ADOStoredProc.free;
end
-------------------------------------------------------
drop table a
gocreate table a (a varchar(10) primary key)
godrop proc proca
gocreate proc proca(@a varchar(10))
as
begin
insert a
select @a
end
go-----------------------------------------------------------
try
ADOConnection1.BeginTrans;
with ADOStoredProc1 do
begin
close;
parameters.Clear;
procedurename:='proca;1';
parameters.Refresh;
parameters.ParamByName('@a').Value:=trim(edit1.Text);
execproc;
end;
showmessage('ok!');
ADOConnection1.CommitTrans;//在execpt之前;
except
showmessage('mistake!');
ADOConnection1.RollbackTrans;
end;
是什么啊?在帮助里找不到它
gocreate table a (a varchar(10) primary key)
godrop proc proca
gocreate proc proca(@a varchar(10))
as
begin
insert a
select @a
end
go
-------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
if Not Assigned(ADOStoredProc1) then
begin
ADOStoredProc1:=TADOStoredProc.Create(self);
ADOStoredProc1.Connection := ADOConnection1;
end;
try
ADOConnection1.BeginTrans;
with ADOStoredProc1 do
begin
close;
parameters.Clear;
procedurename:='proca;1';
parameters.Refresh;
parameters.ParamByName('@a').Value:=trim(edit1.Text);
execproc;
end;
showmessage('ok!');
ADOConnection1.CommitTrans;
except
//finally
showmessage('mistake!');
ADOStoredProc1.free;
ADOConnection1.RollbackTrans;
end;
end;
-----------------------------------------------------
重复几次就会出错;
FreeAndNil(adostoredproc1);
如果指定了OWNER,可以在创建之前加一句:if adostoredproce1<>nil then 加以判断