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;

  • 相关阅读:
    JUC锁框架_AbstractQueuedSynchronizer详细分析
    npm的镜像替换成淘宝
    MHA+keepalived集群环境搭建
    Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
    链表中倒数第k个结点
    调整数组顺序使奇数位于偶数前面
    数值的整数次方
    二进制中1的个数
    矩形覆盖
    OS之进程管理---多线程模型和线程库(POSIX PTread)
  • 原文地址:https://www.cnblogs.com/hieroly/p/3502369.html
Copyright © 2011-2022 走看看