zoukankan      html  css  js  c++  java
  • 实现压缩access(*.mdb)数据库的方法

    下面的函数用来压缩access数据库 需要增加ComObj单元

    //压缩与修复数据库,覆盖源文件

    function CompactDatabase(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;

  • 相关阅读:
    STL标准函数库学习小总结
    3 种生成高强度密码的方法
    树莓派使用 OLED 屏显示图片及文字
    一个骚命令防止你的文件被误删除!
    B站,首战告捷!
    10 个提高效率的 Linux 命令别名
    Vim的三款实用插件
    如何高效回退到特定层级目录?
    如何将目录下的脚本一次性全部执行
    数据结构|数组为什么这么快?
  • 原文地址:https://www.cnblogs.com/hieroly/p/3502369.html
Copyright © 2011-2022 走看看