为什么用delphi操作access数据库,在win98下运行,delete,insert几次后,数据库大小一下子从几10k升
几百M呢?
有没有人遇到过类似的问题,是怎么回事呀!
几百M呢?
有没有人遇到过类似的问题,是怎么回事呀!
解决方案 »
- 请教下谁有VNC开发的DLL?
- 存储过程导出的数据把数据小数点后的数值丢掉了是怎么回事?
- Delphi中何时应该显式调用对象的Free?
- 请教钩子方面的行家指点
- 求Delphi常用控件的英文缩写!
- 再次开帖,一个关于数据库压缩的问题,一个菜鸟在郁闷中!!
- 我用QuickReport3.6页面预览问题...
- 如何在一个EXE文件中得到存放在本地的COOKIES???
- Query1.SQL.Add('select * from student where name='''+edit1.text+'''');前后为什么要用三个单引号?
- 如何自定义过程
- quickreport的显示固定行的问题老FANS肯定知道来帮忙一下吧
- 关于EnlcoGr.dcu问题
http://community.csdn.net/Expert/topic/4050/4050563.xml?temp=.5395777
不过你delete,insert几次后就从 几十K -> 几百M ,是有点夸张,是不是有什么特殊字段;
还有在WIN98下这样,在WIN2000下呢
膨胀是不是Access的bug呢
uses ComObj;//压缩与修复数据库,覆盖源文件 uses ComObj;
function CompressDataBase(AFileName,APassWord: string): Boolean;
const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +
'Jet OLEDB:Database Password=%s;';
var
SPath,SFile: array [0..254] of Char;
STempFileName: string;
JE: OleVariant;
begin
GetTempPath(40,SPath); //取得Windows的Temp路径
GetTempFileName(SPath,'~CP',0,SFile); //取得Temp文件名,Windows将自动建立0字节文件
STempFileName := SFile; //PChar->String
DeleteFile(STempFileName); //删除Windows建立的0字节文件
try
JE := CreateOleObject('JRO.JetEngine'); //建立OLE对象,函数结束OLE对象超过作用域自动释放
OleCheck(JE.CompactDatabase(Format(SConnectionString,[AFileName,APassWord]),
Format(SConnectionString,[STempFileName,APassWord])));
//压缩数据库
//复制并覆盖源数据库文件,如果复制失败则函数返回假,
//压缩成功但没有达到函数的功能
Result := CopyFile(PChar(STempFileName),PChar(AFileName),False);
DeleteFile(STempFileName); //删除临时文件
except
Result := False; //压缩失败
end;
end;
http://access911.net/index.asp?board=11&pm=e&k=20%25%7D%5C%3E%D1%B9%CB%F5+%D0%DE%B8%B4%25%7D%5C%3E1%25%7D%5C%3E%25%7D%5C%3E