毕业设计用到的,把数据库文件备份出来 然后还可以还原。比如数据库是 abao 。 谢谢啦 现在等着用呢

解决方案 »

  1.   

    用 BDE控件的 abao是数据库的名字
      

  2.   

    //备份的SQL 语句为:(trim(EdtFilename.Text)为备份的路径)   
    sql.add('USE master EXEC sp_dboption goldenstone ,'+'''dbo use only'''+' , '+'''TRUE''');   
    sql.Add('use master backup database MyData to disk='''+trim(EdtFilename.Text)+''' with init');//数据库还原的SQL语句为:(trim(EdtFilename.Text)为还原的文件路径)
    sql.Add('use master restore database MyData from disk='''+trim(edtFilename.text)+''' with replace');
      

  3.   

    procedure Trestoreform.SpeedButton1Click(Sender: TObject);
    begin
    if self.OpenDialog1.Execute then
    edit1.Text:=self.OpenDialog1.FileName;
    end;procedure Trestoreform.BitBtn1Click(Sender: TObject);var sql:String;
    begin
      if (edit1.Text='') then
      begin
        Application.MessageBox('请选择文件','提示',MB_ICONWARNING);
        exit;
      end;
          sql:='RESTORE DATABASE "cheliangguanli" FROM DISK='''+OpenDialog1.FileName+'''';
          Query1.SQL.Add(sql);
          Query1.ExecSQL;
          Query1.SQL.Add('Use abao');
          Query1.ExecSQL;
          Application.MessageBox('数据库还原成功','提示',MB_ICONWARNING); end;就是这个代码可是运行的时候 还原会出问题,大概是说 数据库正在使用 出现错误 怎么改啊
      

  4.   

    正在使用的话, 首先断开所以的ADO控件(执行备分的除外),再次是 use master 语句执行一次,再执分备分语句
      

  5.   

    我用的是BDE 能给我改一下嘛
      

  6.   

    var
      ADOTemp: TADOQuery;
      SqlStr: string;
    begin
    //输出文件名
      if OutPutFile.Text = '' then
      begin
        Application.MessageBox('请选择文件的路径及文件名!', '系统提示', mb_OK + MB_ICONINFORMATION);
        Exit;
      end;  try
        ADOTemp := TADOQuery.Create(nil);
        ADOTemp.Connection := czDM.ADOConSQL;
    //备份
        if RB_Backup.Checked then
        begin
          ADOTemp.Close;
          ADOTemp.SQL.Clear;
          SqlStr := 'Backup Database ' + StrDB + ' to disk = ''' + OutPutFile.Text + '''';      ADOTemp.SQL.Add(SqlStr);
          ADOTemp.ExecSQL;
        end;
    //还原
        if RB_Restore.Checked then
        begin
    //先断掉数据库连接
          czDM.ADOConSQL.Connected := False;
          SqlStr := 'Provider=SQLOLEDB.1;Password=' + StrPW +
            ';Persist Security Info=True;User ID=' + StrUID +
            ';Initial Catalog= Master ' +
            ';Data Source=' + StrServer + '';
          czDM.ADOConSQL.ConnectionString := SqlStr;
          czDM.ADOConSQL.LoginPrompt := False;
          czDM.ADOConSQL.Connected := True;
    //重新连接
          ADOTemp.Close;
          ADOTemp.SQL.Clear;
          SqlStr := 'ALTER DATABASE ' + StrDB + ' SET OFFLINE WITH ROLLBACK IMMEDIATE';
          ADOTemp.SQL.Add(SqlStr);
          ADOTemp.ExecSQL;      ADOTemp.Close;
          ADOTemp.SQL.Clear;
          SqlStr := 'Restore Database ' + StrDB + ' from disk =''' + OutPutFile.Text + '''';
          ADOTemp.SQL.Add(SqlStr);
          ADOTemp.ExecSQL;      ADOTemp.Close;
          ADOTemp.SQL.Clear;
          SqlStr := 'ALTER DATABASE ' + StrDB + ' SET ONLINE WITH ROLLBACK IMMEDIATE';
          ADOTemp.SQL.Add(SqlStr);
          ADOTemp.ExecSQL;      czDM.ADOConSQL.Connected := False;
          SqlStr := 'Provider=SQLOLEDB.1;Password=' + StrPW +
            ';Persist Security Info=True;User ID=' + StrUID +
            ';Initial Catalog=' + StrDB +
            ';Data Source=' + StrServer + '';
          czDM.ADOConSQL.ConnectionString := SqlStr;
          czDM.ADOConSQL.LoginPrompt := False;
          czDM.ADOConSQL.Connected := True;
        end;    ADOTemp.Free;
        Application.MessageBox('完成!', '系统提示', mb_OK + MB_ICONINFORMATION);
      except
        Application.MessageBox('操作失败!', '系统提示', mb_OK + MB_ICONERROR);
      end;
      

  7.   

    拜托自己把ADO的那部份改为BDE就好啦,最主要其实就是动态调用SQL而已
      

  8.   

    我改了 可是还是出问题 即使用 ADO也出问题 是不是 sql 2000 的毛病啊 
      

  9.   

    用BDE组件下的Query控件进行数据库连接操作时
    每次使用Query.SQL.add()方法前都要先关闭表和清空Query的SQL属性值,
    即在用Query.SQL.add()前应先输入Query.Close;Query.SQL.Clear;(注意是每次使用前)
    当执行完Query.SQL,add(),和Query.ExecSQL;后再使用Query.Open来打开数据集使其能运行SQL语句