我用Tquery控件执行sql语句,从数据库里查出一个数据集,请问这个数据集所占的内存什么时候释放,系统能自动释放吗(比如在关闭该控件所在的窗体的时候)?我是不是在不需要这个数据集的时候,手工释放内存,怎样释放?
谢谢!
谢谢!
解决方案 »
- delphi word
- 如何用D里的click事件控制SQL中数据表的导入导出??
- 请教用OLE打开WORD文档出错问题
- 哪位推荐一个delphi的学习网站
- 不同像素的图片之间的转换
- 简单的sql语句写法,忘了
- 如何把工程project1中的unit1 加入到工程project2 里???
- 怎样把记事本里的内容再Memo里或者其他编辑工具里显示
- worddocument问题,送分!!!!!
- 让程序绝对崩溃的方法
- 求救呀!!!我的硬盘被别人格式化了,恢复完后,EXCEL,WORD文件名称都变成file1.xls,file2.xls,file3.xls了但文件可以正常打开?
- 高分!Delphi简单问题!
其实 TQuery 它的内存分配等已经都封装在里面了 由它自己进行控制的 你在外面根本不能直接控制 只有 Close可能会导致其释放它占用的内存
begin
Active := False;
end;procedure TDataSet.SetActive(Value: Boolean);
begin
if (csReading in ComponentState) then
begin
FStreamedActive := Value;
end
else
if Active <> Value then
begin
if Value then
begin
DoBeforeOpen;
try
OpenCursor;
finally
if State <> dsOpening then
OpenCursorComplete;
end;
end else
begin
if not (csDestroying in ComponentState) then DoBeforeClose;
SetState(dsInactive);
CloseCursor;
if not (csDestroying in ComponentState) then DoAfterClose;
end;
end;
end;procedure TDataSet.CloseCursor;
begin
BlockReadSize := 0;
FInternalOpenComplete := False;
FreeFieldBuffers;
ClearBuffers;
SetBufListSize(0);
InternalClose;
FBufferCount := 0;
FDefaultFields := False;
end;
结论:
Query.Close;资源就被释放了~~
所以一般建议这样使用:
Query.Open;
{ TODO : 使用查询结果 }
Query.Close;而不建议使用://这样造成资源浪费~~
Query.Close;
{ TODO : 使用查询结果 }
Query.Open;