怎么做数据库的备份和导入,数据库是ACCESS的?(30分)

  • 主题发起人 主题发起人 coolcat3000
  • 开始时间 开始时间
C

coolcat3000

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么做数据库的备份和导入,数据库是ACCESS的?
 
文件复制
 
能不能说具体点
 
直接把数据库拷贝的某个地方去
回复的时候再拷贝回来
我就是这样做的
 
可以先压缩一下。
 
同学们,说说具体的代码吧
 
可以用BATHMOVE控件实现
 
呵呵,access可以倒出成很多格式的啊。
 
备份:copyfile(database1,database2);
恢复:deletefile(database1);
copyfile(database2,database1);

如果数据库大的话,备份、恢复前可以压缩、解压缩一次。
 
压缩、解压缩怎么做呢
 
的ZIP构件,可以将一个目录压缩成一个文件,用的时候再恢复。
 
最好是吧数据导成文本,这样很多数据库都可以通用了
 
procedure TFrmMain.CompactDatabase;
var
dao: variant;
src:string;
dest:string;

begin

adoconn.Close;//压缩是以独占方式进行的;压缩前要关闭数据库连接。

src:=getmainpath+'data/student.mdb';
dest:=getmainpath+'data/bak/'+datetostr(date)+'-'+inttostr(hourof(now))+'-'+inttostr(minuteof(now))+'.mdb';
copyfileto(src,dest);
try
try
screen.Cursor:=crHourGlass;
dao:=CreateoleObject('DAO.DBEngine.36');//'DAO.DBEngine.35不可以 ,不知道是不是access2000要用dao3.6,我在access97上用35和36都可以
dao.CompactDatabase(extractfilepath(application.exename)+'data/student.mdb',extractfilepath(application.ExeName)+'data/compact.mdb');
DeleteFile(extractfilepath(application.ExeName)+'data/student.mdb');
RenameFile(extractfilepath(application.ExeName)+'data/compact.mdb',extractfilepath(application.ExeName)+'data/student.mdb');
except
copyfile(pchar(dest),pchar(src),false);
msgbox.ShowMessage('数据库压缩失败,未知原因,数据库恢复到开始状态');
end;
finally
dao := NULL;
screen.Cursor:=crDefault;
adoconn.Open;
end;
end;
 
请问CopyFile这个函数具体怎么用,它里面的参数是怎么样的
 
//压缩Access数据库
function DaoCompactDB(const FileName:string):Boolean;
var
db:OleVariant;
TempFile:string;
begin
Result:=False;
try
if not DaoActive(db) then
Exit;
try
TempFile:=ExtractFilePath(FileName)+'msaTemp.mdb';
db.CompactDatabase(FileName,TempFile);
DeleteFile(FileName);
RenameFile(TempFile,FileName);
Result:=True;
except
on E:EOleException do
ShowMessage(E.Message);
end
finally
db:=Unassigned;
end;
end;

//修复Access数据库
function DaoRepairDB(const FileName:string):Boolean;
var
db:OleVariant;
begin
Result:=False;
try
if not DaoActive(db) then
Exit;
try
db.RepairDatabase(FileName);
Result:=True;
except
on E:EOleException do
ShowMessage(E.Message);
end
finally
db:=Unassigned;
end;
end;
procedure Tmainform.N15Click(Sender: TObject);

var
aliaspath:string;
f:boolean;
begin

aliaspath:=ExtractFilePath(Application.ExeName)+'cardata/carsale.mdb';
if messagedlg('你是否对数据进行优化?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
try
data.database.connected:=false;
f:=DaoRepairDB(aliaspath);
if f then
begin
showmessage('数据优化完成');
end
else
begin
showmessage('数据优化失败,请重试');
end;
data.database.connected:=true;
finally
end;
end;
data.database.connected:=true;




 
楼上的兄弟
1234albb
能给出你的DaoActive函数吗
 
关注与学习
 
使用adobackup控件
我正在找??
www.playicq.com中有实例
 
后退
顶部