我写了一个动态连接SQL Server数据库的小程序,不过在调试时出错!
procedure TForm1.Button1Click(Sender: TObject);
begin
  MyCon.Connected:=false;
  MyCon.ConnectionString:='';
  MyCon.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+Trim(userid.Text)+';Initial Catalog='+Trim(DBName.Text)+';Data Source='+Trim(ServerName.Text)+';PASSWORD='+Trim(PWD.Text);
  try
    MyCon.connected:=true;//**如果上面的连接不正确,当执行到此语句时,                      // 就产生了中断,而不执行下面的except语句
    showmessage('ok');
  except
    showmessage('no');
  end;end;如果上面的连接不正确,当执行到 MyCon.connected:=true; 此语句时,   就产生了中断,而不执行下面的except中语句,这是为什么??还望高手指教!!明天结帐!!

解决方案 »

  1.   

    连接成功就不执行except的语句呀,你要不试试连接不成功!就会到:showmessage('no');
      

  2.   

    try{
    ......
    }
    except(SQLException ex){
    ..........
    }
    关键是except括号里面的东西
      

  3.   

    tools--debugger options--stop on delphi exceptions的钩子去掉
      

  4.   

    to 2312(╰@oo恒星★) :问题是连接不成功时,他并不执行showmessage('no');
                           而是弹出一个系统的对话框,显出一些系统错误信息。程序就此死掉
    to hjd2357(thanks):  except必须设置参数吗??
      

  5.   

    你是不是在调试的时候呀,这样当然连接不成功他也不执行showmessage('no')啦,你在脱离编译环境的情况试试?
      

  6.   

    对,脱离delphi环境直接执行程序应该就没事了。
      

  7.   

    单独执行EXE,离开DELPHI环境。
      

  8.   

    调试时也可以执行啊,它先是提示错误消息,然后才回来except执行的,当出错时再按一下run,一定有showmessage('no')!
      

  9.   

    调试时,先抛出系统异常,再执行except 中的程序
    直接执行exe文件时,系统异常被屏蔽,直接执行except 中的程序
      

  10.   

    Try....Except End
    Try....Finally End
    的用法应该很清楚吧?!
    在程序调试时,若产生异常,则系统会先抛出异常信息,然后执行Except下面的程序。当你单独执行EXE文件时,如果你没有显示异常的语句它是不会抛出异常信息而直接执行Except的代码!
      

  11.   

    Try....Except End
    Try....Finally End
    的用法应该很清楚吧?!
    在程序调试时,若产生异常,则系统会先抛出异常信息,然后执行Except下面的程序。当你单独执行EXE文件时,如果你没有显示异常的语句它是不会抛出异常信息而直接执行Except的代码!
      

  12.   

    恒星 说得对
    你在windows里运行你的exe文件再试试, 应该没有问题了
      

  13.   

    要脱离开发环境,否则,开发环境最先检测到连接失败的消息,进行处理,然后才能由except 来处理
      

  14.   

    脱离开发环境 run .exe file
      

  15.   

    当报错的时候再按 F9继续执行,回到应用程序窗口就会报错了.还有提醒一下,如果本机有同样的库名称就算没有servername也会连接上的.