如何清除数据库的临时文件?(100分)

  • 主题发起人 主题发起人 oceanwave
  • 开始时间 开始时间
O

oceanwave

Unregistered / Unconfirmed
GUEST, unregistred user!
程序运行时,总会生成很多.MB的文件,当程序非正常退出时,这些文件就占在那。
而且当我以安装方式安装我的程序后,这些原本只在程序目录时生成的文件,竟出现在桌面
上?(即开发方式时,只出现在程序目录)
而如果多次正常关闭后,这些临时文件太多就会影响程序的运行,使之出错
问题1:如果使这些临时文件在安装方式下,只出现在程序所在目录(最好能指定目录)
问题2:如果在程序关闭后(无论是正不正常关闭)能自动消除这些文件。
 
程序退出自動刪除
 
老兄,麻烦你看清问题,谢谢
 
是否Paradox??
 
ACCESS数据库,BDE连接
 
怎么?没人能回答这个问题吗?
 
程序退出自動刪除
 
我的好象是LDB,但只出现在程序所在目录
程序退出自動刪除
 
ldb是ACCESS文件打开后生成的临时文件,而MB是程序生成的
 
MB究竟是什么文件呢?
 
MB文件在程序正常退出是会自动删除,但如果程序非正常退出,MB文件就会留在那。如果
几次非正常退出遗留很多的MB文件在那以后,程序就会出错。不信,各位大侠就试试
 
能说一下你的文件是如何产生的吗?
是什么语句?
 
好象是用BDE就会产生,而ADO不会
 
不过,也好象不是。真不知道是怎么产生的,才问大家的呀
 
这种问题我也曾经遇到过,
你可能设置Session.PrivateDir
如:Database1.Session.PrivateDir:='c:/temp'
这样临时文件会放在 c:/temp中,你就可以处理它们,如把它们删除
 
谢谢!不过,能告诉MB的文件究竟是干什么吗?
 
哈, 我知道为什么会产生DELPHI开发的数据库应用程序为什么会产生MB的临时文件,
请看好了:

1. 通过BDE与数据库系统连接时有一个设置项,
详细过程请打开DELPHI只自带的SQL Explorer工具,找到你的应用程序所连接的Databases Alias,
然后在其Definition属性页中可以看见一个名为ENABLE SCHEMA CACHE的属性,只要把它设置
成FALSE,以后数据库应用程序就不会产生这样形如MB的临时文件。

常规情况下ENABLE SCHEMA CACHE属性的默认值也是FALSE,请oceanwave朋友检查你
所配置的属性值是不是为TRUE! 呵呵...

2. 我解释一下MB临时文件是干什么的。
用BDE为连接数据库时,把ENABLE SCHEMA CACHE属性设置成TRUE,
数据库应用程序在执行下列动作:
通过TDatabase控件来打开关闭数据库,
查询表单等SQL 操作都被记录在MB文件中。 以便下次再运行这个数据库应用程序时,
程序会自动关联到相应数据库中并读取相应的表单。
如果你不信的话,你可以这样测试一下。 动态修改你这个数据库应用程序中关联的
数据库或表单, 等第二次运行时,程序肯定会弹出异常: xxx数据库没找到之类的错误!


如果还不清楚请给我发封email,
如果清楚了送些积分给我,呵呵呵...
 
to zhumr:
我知道为什么有这些MB文件了,如果采用了CACHEUPDATE方式,每个采用CACHEUPDATE的
表都会对应生成一个MB文件。并非象你所说的把ENABLE SCHEMA CACHE设为FALSE就可以了
,我看过,我都是采用默认值FALSE的。后来发现在设计方式下打开数据模块也会产生这
些文件,文件个数与我使用CACHEUPDATE的表个数相同,于是我关闭一个表的CACHEUPDATE
属性,结果MB文件少了一个。这说明这些文件是因为缓存更新产生的缓存文件,当使用缓
存更新文件的表打开时,这些文件就会自动生成。
因此,现在我的问题不是MB文件为何生成的了。而是在如何在一个程序关闭后,如何删除
一些指定的文件(与数据库无关了)。请大侠们指教!
 
补充:
仔细研究了一下,MB文件原来是临时表的文件,每打开一个使用缓存更新的表或建一个
临时表,都会对应产生一个MB文件。
如何减少非正常退出时遗留的MB文件,都好的方法是只在需要时打开相应的表,不要在
程序一开始就使表为活动状态。这样的好处是:1、程序启动速度较快。2、尽量避免临时
表文件的遗留。
虽然如何在程序后删除遗留无用的MB文件还没解决,但也把解决的过程告知大家,以供
参考。
 
多人接受答案了。
 
后退
顶部