再delphi怎样备份数据。和还原数据,举实例!!!

liyujian 2004-01-02 04:40:05
再delphi怎样备份数据。和还原数据,举实例!!!
急需要,
...全文
180 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
fhuibo 2004-06-29
  • 打赏
  • 举报
回复
Access数据库;
var
MyFileName: string;
begin
MyFileName := '';
if SaveDialog1.Execute then
begin
MyFileName := SaveDialog1.FileName;
if MyFileName <> '' then
begin
CopyFile(Pchar(ExtractFilePath(Application.ExeName) + 'shoufa.mdb'), Pchar(MyFileName), false);
end;
end;

var
MyFileName: string;
begin
MyFileName := '';
if OpenDialog1.Execute then
begin
MyFileName := OpenDialog1.FileName;
if MyFileName <> '' then
begin
CopyFile(Pchar(MyFileName),Pchar(ExtractFilePath(Application.ExeName) + 'shoufa.mdb'),false);
end;
end;
end;
fhuibo 2004-06-29
  • 打赏
  • 举报
回复
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
StatusBar1.SimpleText := '正在备份中...';
//label1.Caption:='正在备份中...';
pgbar.Max := 100;
pgbar.Min := 0;
pgbar.Position := 0;
pgbar.Step := 20;
savedialog1.Title:='备份到:';
with SaveDialog1 do
begin
filename := database + FormatDateTime('yy-MM-dd-hh-mm-ss', Now);
options := [ofhidereadonly, offilemustexist, ofpathmustexist];
if execute then
begin
dm.ADOConnection1.Close;
//TmpStr:= ExtractFileName(filename);
// strlen:= Length(TmpStr);
// DevName:= Copy(TmpStr,1,strlen-4);
begin
try
ADOCommand1.CommandText := 'use Master';
pgbar.StepIt;
ADOCommand1.Execute;
adocommand1.CommandText := 'execute sp_helpdevice';
pgbar.StepIt;
adocommand1.Execute;
pgbar.stepit;
adocommand1.CommandText := 'backup database ' + database + ' to disk=''' + filename + ''' with init';
pgbar.StepIt;
adocommand1.Execute;
adocommand1.CommandText := 'Use ' + database;
pgbar.StepIt;
adocommand1.Execute;
// Self.Hide;
application.MessageBox(pchar('数据库已经成功备份到 ' + filename + '!'), Gsysname, mb_ok + mb_iconinformation);
//ShowMessage();
StatusBar1.SimpleText := '';
pgbar.Position := 0;
try
dm.ADOConnection1.Connected := True;
except
begin
StatusBar1.SimpleText := '';
application.MessageBox('无法重新接连数据库!', Gsysname, mb_ok + mb_iconerror);
abort;
end;
end;
self.Close;
except
on Exception do
if dm.ADOConnection1.InTransaction then
dm.ADOConnection1.RollbackTrans;
end;
end;
end;
end;
end;
//还原
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if application.MessageBox('请确保无其他程序正在使用本数据库,否则,还原无法进行!',Gsysname,mb_okcancel+mb_iconinformation)=idcancel then
begin
abort;
end;
StatusBar1.SimpleText := '正在还原中...';
pgbar.Max := 100;
pgbar.Min := 0;
pgbar.Position := 0;
pgbar.Step := 20;
opendialog1.Title:='还原为:';
with OpenDialog1 do
begin
filename := '';
options := [ofhidereadonly, offilemustexist, ofpathmustexist];
if execute then
begin
if dm.ADOConnection1.Connected then
dm.ADOConnection1.Close;
sleep(1000);
pgbar.StepIt;
try
ADOCommand1.CommandText := 'use Master';
ADOCommand1.Execute;
sleep(600);
pgbar.StepIt;
adocommand1.CommandText := 'execute sp_helpdevice';
adocommand1.Execute;
sleep(600);
pgbar.stepit;
adocommand1.CommandText := 'Restore database ' + database + ' From disk=''' + filename + ''' with replace';
sleep(600);
pgbar.StepIt;
try
adocommand1.Execute;
except
begin
raise exception.Create(syserrormessage(getlasterror));
abort;
end;
end;
adocommand1.CommandText := 'Use ' + database;
sleep(600);
pgbar.StepIt;
adocommand1.Execute;
StatusBar1.SimpleText := '';
application.MessageBox(pchar('数据库已经成功还原到数据库 ' + database + '!'), Gsysname, mb_ok + mb_iconinformation);
pgbar.Position := 0;
try
dm.ADOConnection1.Connected := True;
except
begin
StatusBar1.SimpleText := '';
application.MessageBox('无法重新接连数据库!', Gsysname, mb_ok + mb_iconerror);
abort;
end;
end;
self.Close;
except
on Exception do
if dm.ADOConnection1.InTransaction then
dm.ADOConnection1.RollbackTrans;
end;
end;
end;
end;
yinweixian 2004-06-29
  • 打赏
  • 举报
回复
用控件adocommand,备份是backup,还原是restore
老本 2004-06-29
  • 打赏
  • 举报
回复
WinExec();
里面的字符串可以自己组织的。
劣势 2004-06-29
  • 打赏
  • 举报
回复
delphi里如何写牙
hacking 2004-06-29
  • 打赏
  • 举报
回复
Exp system/manager@ORCL File=D:\Exp.DMP Log=D:\Exp.log //导出所有对象
imp system/manager@ORCL file=D:\Exp.DMP log=D:\Exp.log //导入所有对象
yusi008 2004-06-29
  • 打赏
  • 举报
回复
请问上面的大哥oracle数据库里面的表是怎么备份的呢?
insert2003 2004-06-29
  • 打赏
  • 举报
回复
还原


首先要断开你连接数据库的全部connection,然后连接数据库到master,在执行你的还原语句


看看这段代码!
var
database:String;
begin
...
...
database:='你的数据库';
try
Screen.Cursor:=crHourGlass;
if mDataModule.ADOConnection1.Connected then
mDataModule.ADOConnection1.Close;
sleep(1000);
ProgressBar2.StepIt;
ADOCommand1.CommandText := 'use Master';
ADOCommand1.Execute;
sleep(600);
ProgressBar2.StepIt;
adocommand1.CommandText := 'execute sp_helpdevice';
adocommand1.Execute;
sleep(600);
ProgressBar2.stepit;
adocommand1.CommandText := 'Restore database ' + database + ' From disk=''' + myFilename + ''' with replace';
sleep(600);
ProgressBar2.StepIt;
try
adocommand1.Execute;
except
begin
raise exception.Create(syserrormessage(getlasterror));
abort;
end;
end;
adocommand1.CommandText := 'Use ' + database;
sleep(600);
ProgressBar2.StepIt;
adocommand1.Execute;
StatusBar1.SimpleText := '';
application.MessageBox(pchar('数据库已经成功还原到数据库 ' + database + '!'), '提示', mb_ok + mb_iconinformation);
ProgressBar2.Position := 0;
try
mDataModule.ADOConnection1.Connected := True;
except
begin
application.MessageBox('无法重新接连数据库!', '提示', mb_ok + mb_iconerror);
abort;
end;
end;
except
Application.MessageBox('有别的程序(如企业管理器)正在使用本数据库,数据无法恢复','提示',MB_OK+MB_IconInformation);
end;
StatusBar1.SimpleText := '';
frmMain.GetReportDate;
Screen.Cursor:=crArrow;
Self.Close;
end;


liulangnanhai 2004-06-29
  • 打赏
  • 举报
回复
代碼怎麼那麼長啊?

我的代碼:

const
filename = '.\baili.bat';
com1 = ' net stop mssqlserver ';
com2 = ' Net start mssqlserver ';
var
s2: string;
s: Tstringlist;
begin

try
if opend.Execute then //saved是savedialog控件
s2 := opend.FileName

else
exit;
if not fileexists(filename) then
begin
s := Tstringlist.Create();
s.Clear;
s.Add(com1);
s.Add(com2);
s.SaveToFile(filename);
end;
application.ProcessMessages;
winexec(filename, 9);
sleep(20000);
basedm.ADOConnection1.Connected := False;
Basedm.ADOConnection1.Connected := True;
adocommand1.CommandText := 'USE master RESTORE DATABASE Baili FROM DISK=''' + s2 + ''' WITH RECOVERY USE BAILI';
self.pre2;
adocommand1.Execute;
messagedlg('資料還原成功!', mtinformation, [mbok], 0);
except
MessageDlg('還原資料失敗!' + #13 + #10 + '程序將仍用原資料庫運行!', mtError, [mbOK], 0);
end;
zgq19801123 2004-06-29
  • 打赏
  • 举报
回复
up
yinzhiw 2004-06-29
  • 打赏
  • 举报
回复
oracle怎么写啊?
godnoloveihavelove 2004-06-29
  • 打赏
  • 举报
回复
sql server这样写的
背份是BACKUP DATABASE BASENAME TO DISK。。。。
恢复是RESTORE DATABASE BASENAME FROM DISK。。。

这是从磁盘是这样写的,你可以看TSQL帮助
bagayv 2004-01-05
  • 打赏
  • 举报
回复
直接用拷贝备份
用API函数
copyfile()
angle097113 2004-01-02
  • 打赏
  • 举报
回复
这就是备份的主要的语句的
sql.Add('backup database ' + dbname + ' to disk =' + #39 + ExtractFilePath(Paramstr(0)) + 'file\zip.fst' + #39 + ' with init');
ExecSQL;
我是针对sql server的
zgheng 2004-01-02
  • 打赏
  • 举报
回复
adocommand1.CommandText := 'Restore database ' + database + ' From disk=''' + filename + ''' with replace'.................................


backup,restore,user.........
这些语句是任何数据库都适用的吗??
upingking 2004-01-02
  • 打赏
  • 举报
回复
sql server的也是别人的代码
//备份
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
StatusBar1.SimpleText := '正在备份中...';
//label1.Caption:='正在备份中...';
pgbar.Max := 100;
pgbar.Min := 0;
pgbar.Position := 0;
pgbar.Step := 20;
savedialog1.Title:='备份到:';
with SaveDialog1 do
begin
filename := database + FormatDateTime('yy-MM-dd-hh-mm-ss', Now);
options := [ofhidereadonly, offilemustexist, ofpathmustexist];
if execute then
begin
dm.ADOConnection1.Close;
//TmpStr:= ExtractFileName(filename);
// strlen:= Length(TmpStr);
// DevName:= Copy(TmpStr,1,strlen-4);
begin
try
ADOCommand1.CommandText := 'use Master';
pgbar.StepIt;
ADOCommand1.Execute;
adocommand1.CommandText := 'execute sp_helpdevice';
pgbar.StepIt;
adocommand1.Execute;
pgbar.stepit;
adocommand1.CommandText := 'backup database ' + database + ' to disk=''' + filename + ''' with init';
pgbar.StepIt;
adocommand1.Execute;
adocommand1.CommandText := 'Use ' + database;
pgbar.StepIt;
adocommand1.Execute;
// Self.Hide;
application.MessageBox(pchar('数据库已经成功备份到 ' + filename + '!'), Gsysname, mb_ok + mb_iconinformation);
//ShowMessage();
StatusBar1.SimpleText := '';
pgbar.Position := 0;
try
dm.ADOConnection1.Connected := True;
except
begin
StatusBar1.SimpleText := '';
application.MessageBox('无法重新接连数据库!', Gsysname, mb_ok + mb_iconerror);
abort;
end;
end;
self.Close;
except
on Exception do
if dm.ADOConnection1.InTransaction then
dm.ADOConnection1.RollbackTrans;
end;
end;
end;
end;
end;
//还原
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if application.MessageBox('请确保无其他程序正在使用本数据库,否则,还原无法进行!',Gsysname,mb_okcancel+mb_iconinformation)=idcancel then
begin
abort;
end;
StatusBar1.SimpleText := '正在还原中...';
pgbar.Max := 100;
pgbar.Min := 0;
pgbar.Position := 0;
pgbar.Step := 20;
opendialog1.Title:='还原为:';
with OpenDialog1 do
begin
filename := '';
options := [ofhidereadonly, offilemustexist, ofpathmustexist];
if execute then
begin
if dm.ADOConnection1.Connected then
dm.ADOConnection1.Close;
sleep(1000);
pgbar.StepIt;
try
ADOCommand1.CommandText := 'use Master';
ADOCommand1.Execute;
sleep(600);
pgbar.StepIt;
adocommand1.CommandText := 'execute sp_helpdevice';
adocommand1.Execute;
sleep(600);
pgbar.stepit;
adocommand1.CommandText := 'Restore database ' + database + ' From disk=''' + filename + ''' with replace';
sleep(600);
pgbar.StepIt;
try
adocommand1.Execute;
except
begin
raise exception.Create(syserrormessage(getlasterror));
abort;
end;
end;
adocommand1.CommandText := 'Use ' + database;
sleep(600);
pgbar.StepIt;
adocommand1.Execute;
StatusBar1.SimpleText := '';
application.MessageBox(pchar('数据库已经成功还原到数据库 ' + database + '!'), Gsysname, mb_ok + mb_iconinformation);
pgbar.Position := 0;
try
dm.ADOConnection1.Connected := True;
except
begin
StatusBar1.SimpleText := '';
application.MessageBox('无法重新接连数据库!', Gsysname, mb_ok + mb_iconerror);
abort;
end;
end;
self.Close;
except
on Exception do
if dm.ADOConnection1.InTransaction then
dm.ADOConnection1.RollbackTrans;
end;
end;
end;
end;

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧