Access中含有图片字段,我在程序中修改图片
数据库会增大,即使修改由大图片变为小图片也会增大.我试着将数据库的所有图片删掉,数据库大小还是没变化.是不是数据库并没有把以前的图片删除?
数据库会增大,即使修改由大图片变为小图片也会增大.我试着将数据库的所有图片删掉,数据库大小还是没变化.是不是数据库并没有把以前的图片删除?
解决方案 »
- ADOTable查找记录问题
- 【特急】还是关于Twebbrowser的问题,下拉菜单要如何选择?
- 招JAVA开发人员,限成都,有意者内详!
- 在delphi 中可不可以用BCP
- 请问在quickrep中用qrexpr控件怎样计算出所有字段的值?
- Midas发布什么时候要购买授权?
- 救命呀,有没有人知道C:\WINNT\ServicePackFiles\i386\ntldr这个文件是做什么用的呀
- 为什么我在win98下用不了注册服务器函数(registerprocessservices)?
- 怎样才能从TDateTime 中取出月份
- Winamp(还有oicq2000,MSN explore等)的更换skin用的是什么技术?
- delphi前端+ oracle后端 做文本数据管理软件 希望大家指导!
- 非常简单的问题
//压缩与修复数据库,覆盖源文件
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
DataSource1.DataSet.Active:=False;
ADOConnection1.Connected:=False;
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;
ADOConnection1.Connected:=True;
DataSource1.DataSet.Active:=True;
end;CompactDatabase(ExtractFilePath(Application.ExeName)+'Data\Default.mdb','12345');//调用
我一直把ADOConnection1.Connected=false
好像数据库也能连,也没断开啊
当数据库图片删掉,数据库自动减小?
你可驼以定时调用那个过程。也可以做成一种功能放在你的软件中。
Rijie(做人真难) 楼上各位的解答都对,就照他们说的做吧。
Access不是真正SQL server, 日志管理远不及其他的, 他根本不会重用已经清空的位置, 所以Access的数据文件, 只会随着新插入动作, 而线性的加大.
而上面的Compact Database, 其实是把未删除的数据抄去新文件, 抄完後才把旧文件删去, 然後新文件改名为原来的名称. 所以你原有的文件若已经占去硬盘的大部份, 所剩的空间不足够作新文件时, Compact Database将无法实行.