恢复的写法如下:
  dmpact.ADOConnectionPact.Connected:=false;
  adosql.Close;
  AdoSql.SQL.Clear;
  ADOSql.SQL.Text:='use master'
  +' restore database '+sDBname
  +'  from disk='+ quotedStr(EditPath.Text); 
  
  try
    ADOSql.ExecSQL;
  except
    dmpact.ADOConnectionPact.Connected:=true;
    exit;
  end;
  dmpact.ADOConnectionPact.Connected:=true
  LabelShow.Caption:='数据恢复完毕';
我调试了一下,发现没有执行except部分,显示了'数据恢复完毕',可是我看数据库中的数据还是以前的,并没有恢复,后来我把sql语句拿到sql server中,系统执行是正常的,数据恢复正确,请问:上面的语法哪里错了,好像sql并没有执行成功,可是为什么不except呢??
还有一个就是结束恢复后,我明明connected:=true了,为什么打开其他窗口出错,找不到表????谢谢指教!

解决方案 »

  1.   

    我也showmessage(ADOSql.SQL.Text)的值了,都是对的!
      

  2.   

    你在Except写成这样看看
      try
        ADOSql.ExecSQL;
      except
        Showmessage('出错了');
        exit;
      end;
    我没有调试。
      

  3.   

    to MouseBrother() :Showmessage('出错了');这句话就不执行,好像系统没有判断出是否成功to guorui_wh(Re) ( ) :我还是想试验一下,我查了一天了,我看大家好像也是这么用的,应该没问题的。
    不过我用的ado,或许与这个有关,
    虽然dmpact.ADOConnectionPact.Connected:=false;
    可能并没有断开????
      

  4.   

    但是总应该出错呀???为什么不出错呢???用什么判断是否sql成功呢????
      

  5.   

    各位帮帮忙,谢谢!!
    我现在又加了一个adoconnection放在本地窗口,让query与本地的adoconnection关联,在窗口open时connect为true,close时,false.
    可是,数据依旧没有恢复,也没有错误,不过这时恢复完毕,打开其他窗口不报找不到表的错误了,也可看到数据,但是就是数据没有恢复,帮帮忙,好么,谢谢??
      

  6.   

    'use master'
      +' restore database '+sDBname
      +'  from disk='+ quotedStr(EditPath.Text); 
      
    怀疑只执行了 use master;
    分两遍执行 
    'use master'
    execsql
    ' restore database '+sDBname  +'  from disk='+ quotedStr(EditPath.Text); 
      

  7.   

    谢谢newyj(吴刚vs西西弗) :按你方法试验,果然提示出错了(没有获得排它访问权),看来,确实没有执行第二句,所以一直不报错!!我又查了一个论坛贴子,知道了如何让数据库处于离线状态,现在已经恢复成功,谢谢,现在结贴加分