怎么样备份数据库?在form1打开form2成功,在form2如果调用关闭form1呢?
解决方案 »
- Tchartseries与Tlineseries有什么区别和联系呢?
- 请看这个网站怎么做采集
- ComboBox的输入值及刷新
- 请问在程序里头怎么实现判断OS有否装BDE?? 若可以的话该怎么实现???
- 高手赋教请问:用delphi7如何修改<<注册表编辑器>>左面树上<<项>>名称。
- 那位作过vcd点歌系统,我想问一问,请近来看看。
- 在使用DBGridEh时如何实现点计列标题实现自动排序,急急急!!!
- 关于使用Excel不能打印的问题
- 程序中如何引用汇编程序
- 提问一个DELPHI数据库问题。
- ADO连SQL server 后,在创建表之前怎么判断是否有同名的表存在?
- 提取OleVariant中的值
query.sql.add('backup database 数据库 to disk = 'c:\ccc.bak')
query.sql.add('restore database 数据库 from disk = 'c:\ccc.bak')
Access数据库:
直接复制
备份:
procedure TFrmDBMaintain.Button1Click(Sender: TObject);
var
address:String;
begin
if Edit1.Text='' then
begin
showmessage('文件名不能为空');
Exit;
end; if DMADO.ADOConnection1.Connected then DMADO.ADOConnection1.Close;
DMADO.ADOConnection1.DefaultDatabase:='Master';
DMADO.ADOConnection1.Open; address:=Edit1.Text; if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('SELECT * FROM sysdevices WHERE name='+''''+DBBK+'''');
DMADO.ADOQuery1.Open;
if DMADO.ADOQuery1.RecordCount=0 then
if Application.MessageBox('是否添加新的数据库备份设备','备份设置',MB_YESNO)=6 then
begin
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('USE master');
DMADO.ADOQuery1.SQL.Add('EXEC sp_addumpdevice'+''''+'disk'+''''+','+''''+DBBK+''''+',');
DMADO.ADOQuery1.SQL.Add(''''+address+'''');
DMADO.ADOQuery1.ExecSQL;
end
else Exit
else
if DMADO.ADOQuery1.Fields[6].AsString <> address then
begin
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('USE master');
DMADO.ADOQuery1.SQL.Add('EXEC sp_dropdevice '+DBBK);
DMADO.ADOQuery1.ExecSQL;
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('USE master');
DMADO.ADOQuery1.SQL.Add('EXEC sp_addumpdevice'+''''+'disk'+''''+','+''''+DBBK+''''+',');
DMADO.ADOQuery1.SQL.Add(''''+address+'''');
DMADO.ADOQuery1.ExecSQL;
end; if FileExists(Edit1.Text) then
if Application.MessageBox('是否替换原数据库备份文件?','确认替换',MB_YESNO)=6 then
begin
try
DeleteFile(address);
except
Application.MessageBox('替换数据库备份文件失败','替换文件',MB_OK);
Exit;
end;
end
else Exit; try
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('BACKUP DATABASE '+DatabaseName+' TO '+DBBK);
DMADO.ADOQuery1.ExecSQL;
DMADO.ADOQuery1.Close;
except
Application.MessageBox('数据库备份失败','错误',MB_OK)
end; if DMADO.ADOConnection1.Connected then DMADO.ADOConnection1.Close;
DMADO.ADOConnection1.DefaultDatabase:=DatabaseName;
DMADO.ADOConnection1.Open;end;
恢复:procedure TFrmDBMaintain.Button2Click(Sender: TObject);
var
address: String;
begin
address:=Edit2.Text;
if not FileExists(address) then
begin
Application.MessageBox('数据库备份文件不存在','文件',MB_OK);
Exit;
end; if DMADO.ADOConnection1.Connected then DMADO.ADOConnection1.Close;
DMADO.ADOConnection1.DefaultDatabase:='Master';
DMADO.ADOConnection1.Open; try
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('USE master');
DMADO.ADOQuery1.SQL.Add('EXEC sp_dropdevice '+DBBK);
DMADO.ADOQuery1.ExecSQL;
except
Application.MessageBox('数据库备份驱动器不存在','错误',MB_OK);
Exit;
end;
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('USE master');
DMADO.ADOQuery1.SQL.Add('EXEC sp_addumpdevice'+''''+'disk'+''''+','+''''+DBBK+''''+',');
DMADO.ADOQuery1.SQL.Add(''''+address+'''');
DMADO.ADOQuery1.ExecSQL;
try
if DMADO.ADOQuery1.Active then DMADO.ADOQuery1.Close;
DMADO.ADOQuery1.SQL.Clear;
DMADO.ADOQuery1.SQL.Add('RESTORE DATABASE '+DatabaseName+' FROM '+DBBK);
DMADO.ADOQuery1.ExecSQL;
DMADO.ADOQuery1.Close;
except
Application.MessageBox('数据库恢复失败','错误',MB_OK)
end; if DMADO.ADOConnection1.Connected then DMADO.ADOConnection1.Close;
DMADO.ADOConnection1.DefaultDatabase:=DatabaseName;
DMADO.ADOConnection1.Open;
end;
query.sql.add('backup database 数据库 to disk = 'c:\ccc.bak')这个不行的..cannot return a result set
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('backup database medicine to disk=c:\ccc.mdf');
ADOQuery1.Open;
我这样试过,可是错误消息为"没提供完整信息"...谁知道为什么呀?
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('backup database medicine to disk=''c:\ccc.mdf''');
ADOQuery1.ExecSQL;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('backup database medicine to disk=''c:\ccc.mdf''');
ADOQuery1.ExecSQL;
这位兄台答中了...在delphi中,单引号是不是就像C++中的"\"转义字符呀???
在目录前的两个单引号就是一个..我理解对了吗?
Delphi中的字符串用单引号括起来,对于字符串中的单引号以两个单引号表示。