现在的位置: 首页 > 综合 > 正文

使用Delphi压缩Access

2012年01月30日 ⁄ 综合 ⁄ 共 1248字 ⁄ 字号 评论关闭

                                         使用Delphi压缩Access


       
Access数据库是我们经常使用的数据库,但是Access数据库在使用的过程中,随着

时间的迁移已经数据的反复添加与删除,整个数据库软件就会变得越来越臃肿。Access

的DBMS为我们提供了修复和压缩数据库的功能,但是在使用开发基于Access的数据库

应用的过程中,最终用户的机器上不一定都有DBMS,况且用户也不一定会使用这个功

能,所以我们最好能够在程序里面加入压缩功能,这样用户使用的时候就会很方便了。

 
      下面参照网上的资料写的是一个压缩数据库的函数compressDB,要让这段代码顺利

编译,需要use 一下ComObj

 1function compressDB(dbName: string): Boolean; 
 2var 
 3    DaoVar: OLEVariant; 
 4begin 
 5    if DM.con1.Connected then DM.con1.Connected := false//如果数据模块中的数据库连接打开,请先关闭 
 6    try 
 7        try 
 8            DaoVar := CreateOleObject('DAO.DBEngine.36'); 
 9            if FileExists('temp.mdb') then DeleteFile('temp.mdb'); //删除临时数据库文件"temp.mdb" 
10
11            DaoVar.CompactDatabase(dbName, 'temp.mdb'); //压缩"dbName" 到"temp.mdb" 
12
13            if DeleteFile(dbName) then //删除文件"dbName" 
14                RenameFile('temp.mdb', dbName); //将"temp.mdb"改名为"dbName " 
15            ShowMessage('压缩成功'); 
16            Result := true
17        except 
18            Result := false
19        end; 
20    finally 
21        DM.con1.Connected := true//为了其它操作能够正常执行,还要打开数据库连接 
22    end; 
23end;
24

 

    注意:如要要让这段据说delphi使用ADO不能压缩Access数据库,所以这里使用的

DAO对象,另外网上说还有一个第三方的数据库驱动,可以直接压缩,有兴趣的可以

Google一下,一定可以找到满意的答案的。在压缩的过程中,一定不要打开数据库,否

则会出错的。

抱歉!评论已关闭.