我用下列语句能实现对sqlserver的备份却不能实现对access的备份
if SaveDialog1.Execute then
begin
s:= SaveDialog1.FileName ;
ADOConnection1.Close;
ADOCommand1.CommandText:='BACKUP DATABASE DATABASE1 TO DISK='+Quotedstr (s);
ADOCommand1.Execute ;
end;我想知道是否对access的备份只有通过copyfile的方式实现,谢谢
if SaveDialog1.Execute then
begin
s:= SaveDialog1.FileName ;
ADOConnection1.Close;
ADOCommand1.CommandText:='BACKUP DATABASE DATABASE1 TO DISK='+Quotedstr (s);
ADOCommand1.Execute ;
end;我想知道是否对access的备份只有通过copyfile的方式实现,谢谢
解决方案 »
- 关于IdTCPSever用ReadBuffer接收数据的问题
- Delphi 批量更新有问题 ApplyUpdates (少用) ,各位高手请看下代码!
- 这个需要用什么控件
- 寻找项目合作人
- 如何删除一个文件里所有的数据?扩展名可以是自定义的文件。
- 简单问题!
- 请问:如何访问带密码的网络共享目录?
- 文件传输: asynchronous socket error 10061
- 用Delphi做了几个Active Dll文件,怎样才能做一个安装程序,让他们在别的机器上一次注册完
- dephi6用ado连sqlserver,sqlserver7和2000有什么区别
- 内存的释放
- 函数调用的时候,参数少写一个,仍能成功调用,为什么???
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, TFlatGaugeUnit, StdCtrls, TFlatEditUnit, ExtCtrls,FileCtrl;type
TBackup_F = class(TForm)
Label1: TLabel;
Label2: TLabel;
ZT_FE: TFlatEdit;
JD_FG: TFlatGauge;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Backup_F: TBackup_F;implementation{$R *.dfm}Uses
ExtIniFiles,StrUtils;function GetFileNum(dir:string):integer;
var
sr:Tsearchrec;
begin
result:=0;
if findfirst(dir,faanyfile,sr)=0 then
repeat
if(sr.Attr<>fadirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
result:=result+1;
until findnext(sr)<>0;
end;
//***********************************************************************************
procedure Wait(second:Longint);
var
FirstTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages;
until ((GetTickCount-FirstTickCount) >=second);
end;
//***********************************************************************************
procedure TBackup_F.Timer1Timer(Sender: TObject);
var
myini:TExtIniFile;
cz,num:integer;
spath,dpath,name,RQ:string;
sr:Tsearchrec;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
Timer1.Enabled:=false;
myini:=TExtIniFile.Create(ExtractFilePath(Application.ExeName)+'set.ini');
cz:=myini.ReadInteger('bakup','CZ',0);
if cz=0 then
begin
spath:=ExtractFilePath(Application.ExeName)+'Data';
dpath:=myini.ReadString('bakup','BakPath','');
dpath:=dpath+'\'+AnsiReplaceStr(DateTimeToStr(now),':','');
ForceDirectories(dpath);
num:=GetFileNum(spath+'\*.*');
ZT_FE.Text:='正在备份数据库......';
JD_FG.MaxValue:=num;
if findfirst(spath+'\*.*',faanyfile,sr)=0 then
repeat
if(sr.Attr<>fadirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
begin
copyfile(pchar(spath+'\'+sr.Name),pchar(dpath+'\'+sr.Name),false);
JD_FG.Progress:=JD_FG.Progress+1;
end;
Wait(100);
until findnext(sr)<>0;
ZT_FE.Text:='数据库备份成功';
MessageBox(handle,'恭喜你:数据库备份成功!','祝贺你',MB_OK or MB_ICONINFORMATION);
end
else begin
RQ:=myini.ReadString('bakup','RQ','');
spath:=myini.ReadString('bakupdian',RQ,'');
spath:=spath+'\'+RQ;
dpath:=ExtractFilePath(Application.ExeName);
dpath:=dpath+'Data';
num:=GetFileNum(spath+'\*.*');
ZT_FE.Text:='正在还原数据库......';
JD_FG.MaxValue:=num;
if findfirst(spath+'\*.*',faanyfile,sr)=0 then
repeat
if(sr.Attr<>fadirectory)and(sr.Name<>'.')and(sr.Name<>'..') then
begin
copyfile(pchar(spath+'\'+sr.Name),pchar(dpath+'\'+sr.Name),false);
JD_FG.Progress:=JD_FG.Progress+1;
end;
Wait(100);
until findnext(sr)<>0;
ZT_FE.Text:='数据库还原成功';
MessageBox(handle,'恭喜你:数据库还原成功!','祝贺你',MB_OK or MB_ICONINFORMATION);
end;
StartupInfo.cb:=sizeof(StartupInfo);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
CreateProcess(pchar(ExtractFilePath(Application.ExeName)+'TSGL.exe'),nil,nil,nil,false,0,nil,nil,StartupInfo,ProcessInfo);
close;
end;end.
还原的时候拷贝回去再连接
备份时把当前连接断开复制为另外一个文件,还原时则相反操作就是了
Copy file 最簡單實用
ACCESS又不大,
拷贝又快,方便