如题,我用delphi做的一个程序中的备份功能,便是备份的时候却找不到数据库文件?下面是我写的代码:各位帮我看看,有没有问题,小弟在此谢过了!procedure TForm1.SpeedButton16Click(Sender: TObject);
begin
  SaveDialog1.filter:='数据库备份文件(*.bak)|*.bak';
  if SaveDialog1.Execute then
    edit18.Text := SaveDialog1.FileName;
end;procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
  OpenDialog1.filter:='数据库备份文件(*.bak)|*.bak';
  if OpenDialog1.Execute then
    edit17.Text:=OpenDialog1.FileName
  else
    edit17.Text:='';
end;procedure TForm1.SpeedButton18Click(Sender: TObject);
begin
  OpenDialog1.filter:='数据库备份文件(*.bak)|*.bak';
  if OpenDialog1.Execute then
    edit19.Text:=OpenDialog1.FileName
  else
    edit19.Text:='';
end;procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
  if edit18.Text='' then
  begin
    MessageDlg('请选备份路径!',mtInformation,[mbok], 0);
  end
  else
  begin
  Label47.Caption:='请选择数据要备份的路径:'+'(正在备份数据......)';
  ADO_bak.Close;
  ADO_bak.SQL.Clear ;
  ADO_bak.SQL.Add('Backup database Credit ') ;
  ADO_bak.SQL.Add('to disk='''+edit18.Text+''''+' with init');
  try
    ADO_bak.ExecSQL;
    MessageDlg('备份成功!',mtInformation,[mbok], 0);
    Label47.Caption:='请选择数据要备份的路径:';
    edit18.Text:='';
  except
    MessageDlg('备份失败!',mtInformation,[mbok], 0);
    Label47.Caption:='请选择数据要备份的路径:';
  end;
  end;
end;procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
  if edit17.Text='' then
  begin
    MessageDlg('请选还原文件!',mtInformation,[mbok], 0);
  end
  else
  begin
  Label46.Caption:='请选择要还原的数据:'+'正在还原数据......';
  if Label46.Caption='请选择要还原的数据:'+'正在还原数据......' then
    begin
      Screen.Cursor:=crHourGlass;     // Data.ADOCon.Connected:=false;
      ADO_bak.Close;
      ADO_bak.SQL.Clear ;
      ADO_bak.SQL.Add('Use Master');
      ADO_bak.SQL.Add('ALTER DATABASE Credit SET OFFLINE WITH ROLLBACK IMMEDIATE');
      ADO_bak.SQL.Add('RESTORE DATABASE Credit') ;
      ADO_bak.SQL.Add('FROM disk='''+edit17.Text+'''');
      ADO_bak.SQL.Add('ALTER DATABASE Credit SET ONLINE WITH ROLLBACK IMMEDIATE');
      try
        ADO_bak.ExecSQL;
        MessageDlg('还原成功,请重启系统!',mtInformation,[mbok], 0);
        Label46.Caption:='请选择要还原的数据:';
        Screen.Cursor:=crDefault;
        form1.close;
      except
        MessageDlg('还原失败!',mtInformation,[mbok], 0);
        Label46.Caption:='请选择要还原的数据:';
        Screen.Cursor:=crDefault;
      end;
    end;
  end;
end;procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
  if edit19.Text='' then
  begin
    MessageDlg('请选要删除的备份文件!',mtInformation,[mbok], 0);
  end
  else
  begin
  if MessageDlg('您是否要删除备份数据?',mtInformation,[mbyes,mbno], 0)=mryes then
    begin
      DeleteFile(edit19.Text);
      edit19.Text:='';
      SpeedButton8.Enabled:=false;
    end
  else
    exit;
  end;
end;

解决方案 »

  1.   

    好像看過這個貼子裏了。EDIT18裏面的文件是不是有效的??
      

  2.   

    你最终组合的sql语句肯定有问题,放到查询分析器中检查一下,或自己在资源管理器中还原 一个,在跟踪器跟踪一下,按照跟踪到的语句,自己比对一下
      

  3.   

    可是sql语句在还原的时候才用到啊!我备份的时候和sql语句也有关系吗?
      

  4.   

    把調試下,把你的組合出來的SQL放到查詢分析器中試下看能不能執行。
      

  5.   

    我刚才调试了一下,显示我第一行sql语句附近有错误。就是下面这一句,我不知道错在哪
    ADO_back.SQL.Add('Use Master');
      

  6.   

    我刚才把单句的sql语句放进去一调试,显示add附近有错误,我不知道是什么原因?