备份:
  CopyFile('Database.mdb','A:\Database.bak');
还原:
  CopyFile('A:\Database.bak','Database.mdb');^o^ 开个玩笑。要想实现库中单个或多个表的备份,用ADO恐怕不行,得用DAO,用它的DBEngin对象来动态创建MDB数据库,然后用SQL语句将原数据库中的表复制过去。还原比较简单,因为不用创建数据库,只需要从用户选择的备份文件中把数据库复制过来就行了,当然,还是用SQL语句。

解决方案 »

  1.   


      要是整个库的话就直接复制吧,就象上面我说的那样,这样最简单。不过要想压缩的话,还是要用DAO的。压缩还是用DBEngin对象所提供的CompactDatabase方法。MS Access 应该也是调用这个方法来修复和压缩数据库的。使用方法:
    DBEngine.CompactDatabase 要修复或压缩的数据库, 修复或压缩后的数据库
      

  2.   

    to Triumph(无为) 
    能否具体点.
      

  3.   


      就是说当备份时,首先使用  DBEngine.CompactDatabase 数据库,备份目标文件  一次性完成修复、压缩、备份数据库过程,还原时就直接COPY过来覆盖原文件即可。  这样的程序我没编过,无法给你具体代码,不过实现方法知道了代码应该没有什么问题。
      

  4.   

    用DAO实现楼上的兄弟说的极是
      

  5.   

    VSaber(☆浪人☆) (2002-1-6 19:08:07)  得0分 
    access数据库不如直接拷贝!  
    确实是这样的,如果ACCESS中的表相互之间有好多关系,怎么办?
    真不如直接拷贝!
      

  6.   

    CompactDatabase 支持备份到多个软盘上吗?
      

  7.   

    //delphi 本身就有.支持备份到多个软盘有文件分割的控件,并且是免费的
    Uses  Zlib,.....function CompressString(const Source:string):string;//压缩
    var
       CompactedStream :TCompressionStream;
       Dest:TMemoryStream;
       Sour:TMemoryStream;
       iSize:Integer;
       P:Pointer;
    begin
      Dest := TMemoryStream.Create();
      Sour := TMemoryStream.Create();
      iSize := Length(Source);
      Sour.SetSize(iSize);
      Move(Pointer(Source)^,Sour.Memory^,iSize);
      CompactedStream := TCompressionStream.Create(clMax,Dest);
      Sour.SaveToStream(CompactedStream);
      CompactedStream.Free();
      Sour.Free();
      SetLength(Result,Dest.Size + Sizeof(integer));
      P := Pointer(Result);
      Move(iSize,P^,Sizeof(Integer));//
      P := Pointer(Integer(P) + Sizeof(integer));
      Move(Dest.Memory^,P^,Dest.Size);
      Dest.Free();
    end;function UnCompressString(const Source:string):string;//解压缩var
       DeCompactedStream :TDeCompressionStream;
       Sour:TMemoryStream;
       S:String;
       iSize:integer;
       P:Pointer;
    begin
       Sour:=TMemoryStream.Create();
       Move(Pointer(Source)^,iSize,Sizeof(integer));
       SetLength(Result,iSize);   Sour.SetSize(Length(Source) - Sizeof(integer));
       P := Pointer(Source);
       P := Pointer(Integer(P) + Sizeof(Integer));
       Move(P^,Sour.Memory^,Length(Source)-4);   DeCompactedStream := TDeCompressionStream.Create(Sour);
       DeCompactedStream.Read(Pointer(Result)^,iSize);
       DeCompactedStream.Free();
       Sour.Free();
    end;
      

  8.   

    to lwm8246(lwm8246)
    什么控件?
      

  9.   

    //请留下 e-mail 或到 http://www.looc.nl/下载最新的版本
      

  10.   

    to lwm8246(lwm8246
    控件少了个*.dcu文件?