我做了一个进销存软件,我想做一个备份和恢复功能,备份整个数据库。由于我第一次做,没有什么思路,请各位高手帮我指点一下,最好能说得详细一些,谢谢!

解决方案 »

  1.   

    就把你用到的数据库文件,考到指定的路径下就行了,用时再考回来呀!copyfile()
      

  2.   

    to realist(现实):能给我一个具体的实例吗?
      

  3.   

    用sql语句 
    数据库备份
    if savedialog1.Execute then
           filstr:=savedialog1.FileName ;
         try
            with jyd.command do
             begin
                close;
                sql.clear;
                sql.text:=format('backup database jydfc to disk=''%s'' with init',[filstr]);
                execsql;
              end;
           except
             on exception do
               if jyd.ADOConnection1.InTransaction then
                 jyd.ADOConnection1.RollbackTrans
            end;
         end;数据库恢复 if opendialog1.Execute then
            filstr:=opendialog1.FileName ;
         messagedlg('恢复过程中将会出现短时间的类式死机现象,请耐心等待!!',mtconfirmation,[mbok],0);
         jyd.ADOConnection1.Connected:=false;
         jyd.ADOCommand1.CommandText:='alter database jydfc set offline with rollback immediate';
         jyd.ADOCommand1.Execute ;
         jyd.ADOCommand1.CommandText:=format('restore database jydfc from disk=''%s''',[filstr]);
         jyd.ADOCommand1.Execute;
         jyd.ADOCommand1.CommandText:='alter database jydfc set online with rollback immediate';
         jyd.ADOCommand1.Execute ;   end;我用的数据库是sql server
      

  4.   

    以下是一段CB程序,自己改为Delphi的就可以了。
    用SQL Server 数据库,备份到数据库服务器端:
    1、在master库中建立备份和恢复存储过程。CREATE PROCEDURE backupdb
      @database varchar(10),
      @directory varchar(100)
    AS
      backup database @database
      to disk=@directory2、取得服务器路径。AnsiString __fastcall TFrmDM::GetSqlServerPath(){
      AnsiString result,tmp;
      TADOQuery *Query=new TADOQuery(this);
      Query->Connection=ADOConnection_Master;
      Query->Close();
      Query->SQL->Clear();
      Query->SQL->Add("select filename from sysdatabases where name='master'");
      Query->Open();
      tmp=Query->FieldByName("filename")->AsString;
      result=tmp.SubString(1,tmp.Length()-15);
      Query->Free();
      return result;
    }
      

  5.   

    3、调用存储过程  d=FormatDateTime("yyyy-mm-dd hh-mm-ss",FrmDM->GetServerTime());
      try{
         path=FrmDM->GetSqlServerPath()+"backup\\";
         FrmDM->ADOStoredProc1->Close();
         FrmDM->ADOStoredProc1->Connection=FrmDM->ADOConnection_Master;
         FrmDM->ADOStoredProc1->Prepared=true;
         FrmDM->ADOStoredProc1->ProcedureName="backupdb;1";
         FrmDM->ADOStoredProc1->Parameters->ParamByName("@database")->Value = "db_name_to_backup";
         FrmDM->ADOStoredProc1->Parameters->ParamByName("@directory")->Value =path+"db_name_to_backup"+d;
         FrmDM->ADOStoredProc1->ExecProc();
         Application->MessageBox("备份完成","提示",MB_OK+MB_ICONINFORMATION);
         this->Close();
       }
       catch(...){
         Application->MessageBox("备份出错,请重新再来","警告",MB_OK+MB_ICONWARNING);
         return;
       }
      

  6.   

    如果你用access直接拷贝数据库就可以了:)
      

  7.   

    數據庫備份與恢復:
    备份:
    procedure tform1.btnbuckupclick(sender:tobject);
    var
       QryTmp:Tquery;
    begin
         qrytmp:=Tquery.create(self);
         qryTmp.databasenme:=database1.databasename
         QryTmp.sql.text:='Backup database 数据库 to disk='''+
         你的路径  +'''';  
         QryTmp.execsql;
    end; 恢复:
    procedure tform1.btnrestoreclick(sender:tobject);
    var
       QryTmp:Tquery;
    begin
         qrytmp:=Tquery.create(self);
         qryTmp.databasenme:=database1.databasename;
         database1.connect:=false;//记住,关闭
         QryTmp.sql.text:=' use master '+
                         +' restore database 数据库 to from='''+
                         你的路径  +'''';  
         QryTmp.execsql;
         database1.connect:=true;//
    end;