数据备份问题?

Zoogreen 2002-07-05 10:05:59
如何备份数据库文件(如mysql数据库中所有的表)我现在用的是savedialog不过不知道怎么写,其它方法也行,只是可行立刻给分。(delphi6.0的)
...全文
24 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
foreveryday007 2002-08-13
  • 打赏
  • 举报
回复
用備份的控件吧
zouweip7091 2002-08-13
  • 打赏
  • 举报
回复
begin
pgbar.Max:=100;
pgbar.Min:=0;
pgbar.Step:=20;
adoconnection1.Close;
if adoconnection1.Connected then
begin
application.MessageBox('数据库数据正在使用','系统提示')
end
else
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 docmanage to disk=''c:\ccc.bak'' with init';
pgbar.StepIt;
adocommand1.Execute ;
adocommand1.CommandText:='backup log docmanage to ccc';
pgbar.StepIt;
adocommand1.Execute;
try
aDOConnection1.Connected:=true;
except
ShowMessage('无法连接指定的数据库!');
application.Terminate;
end;
form1.Hide;
if messagedlg('数据库docmanage已成功备份到c:\ccc.bak!是否继续?',mtwarning,[mbok],0)=mrok then
begin
form1.close
end;
except
on exception do
if ADOConnection1.InTransaction then
ADOConnection1.RollbackTrans
end;
end;
end;
Zoogreen 2002-07-05
  • 打赏
  • 举报
回复
这样子对某个表进行备份不太好吧,这样的话用batchmove不也一样吗?
ych121 2002-07-05
  • 打赏
  • 举报
回复
pp,xh,bh等对应表中的字段,其中pp[1],xh[]等数组的大小与字段长度对应
Zoogreen 2002-07-05
  • 打赏
  • 举报
回复
type 定义的一些字符串数组是什么东西啊? 你自己表的字段?
yctwfly 2002-07-05
  • 打赏
  • 举报
回复
同意楼上观点!
ych121 2002-07-05
  • 打赏
  • 举报
回复
type
TMethod=Record
pp:string[1];//标识是存ys1+bh还是ys2+bh
xh:string[3];
bh:string[12];
fb:string[8];
mc:string[56];
dw:string[8];
q:string[13];
jj:string[13];
rg:string[13];
jx:string[13];
qs:string[8];
xs:string[8];
xsa:string[8];
xsb:string[8];
xsc:string[8];
hsgs:string[254];
hss:string[254];
end;
methodfiletype=file of TMethod;
var
methodfile:methodfiletype;
methodrec:TMethod;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if savedialog1.Execute then
filename1:=savedialog1.FileName
else
exit;
tabname1:='ys1'+bh;
assignfile(methodfile,filename1);
rewrite(methodfile);
with datamodule1.Query1 do
begin
close;
sql.Clear;
sql.Add('select * from '+tabname1+''); //
open;
first;
i:=0 ;
while not eof do
begin
methodrec.pp:='1';
methodrec.xh:=fieldbyname('xh').asstring;
methodrec.bh:=fieldbyname('bh').AsString;
methodrec.fb:=fieldbyname('fb').AsString;
methodrec.mc:=fieldbyname('mc').AsString;
methodrec.dw:=fieldbyname('dw').AsString;
methodrec.q:=floattostr(fieldbyname('q').AsFloat);
methodrec.jj:=floattostr(fieldbyname('jj').AsFloat);
methodrec.rg:=floattostr(fieldbyname('rg').AsFloat);
methodrec.jx:=floattostr(fieldbyname('jx').AsFloat);
methodrec.qs:=floattostr(fieldbyname('gs').AsFloat);
methodrec.xs:=floattostr(fieldbyname('xs').AsFloat);
methodrec.xsa:=floattostr(fieldbyname('xsa').AsFloat);
methodrec.xsb:=floattostr(fieldbyname('xsb').AsFloat);
methodrec.xsc:=floattostr(fieldbyname('xsc').AsFloat);
methodrec.hsgs:=fieldbyname('hsgs').AsString;
methodrec.hss:=fieldbyname('hss').AsString;

seek(methodfile,i);
i:=i+1;
write(methodfile,methodrec);
next;
end;
end;
johnsonrao 2002-07-05
  • 打赏
  • 举报
回复
用CopyFile就可以了?
Zoogreen 2002-07-05
  • 打赏
  • 举报
回复
不是写在程序里总要给用户有个直观的感觉吧,有一个savedialog这相比较清晰一点,
Zoogreen 2002-07-05
  • 打赏
  • 举报
回复
这没有关系,只要如何实现我说的备份就行,用savedialog如何将以有的某个表拷到其它任何地方进行备分即可
hnsyf 2002-07-05
  • 打赏
  • 举报
回复
我只会使用SQL Server,备份是Backup Database,不只在mysql下是否能用?
luoweicaisd 2002-07-05
  • 打赏
  • 举报
回复
没用过mysql,帮你up
surfguy 2002-07-05
  • 打赏
  • 举报
回复
var

filename:string;//目标库文件名
source,target: TFileStream;

begin

source:=TFileStream.Create('源库文件名',fmOpenRead );//支持路径、扩展名;
try
target:=TFileStream.Create(filename,fmOpenWrite or fmCreate);
try
if target.CopyFrom(source,source.Size)=source.Size then
ShowMessage('成功备份到'+filename+'!!!');
finally
target.Free;
end;
finally
source.Free;
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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