我最近做了一个MIS,数据库的联接信息写在注册表中,TADOConnection的联接字符串从注册表中读取,已经实现了。但我现在想完善一下,就是,当数据库服务器改名、改IP地址或者服务器死机时候,我打开我的MIS,会自动弹出个窗口(自己设计的窗口)让我输入服务器名和数据库的登录名、密码,应该怎么做?我用Try Except不行,当联不上的时候,程序就要死掉了,而且过一会后,只会出来TADOConnection的错误提示,而不是我的窗口,应该怎么办呢?

解决方案 »

  1.   

    用下面的结构试试。另外缩短连接超时的时间。try 
    {
       访问DBMS
    } catch (Exception *my)
    {
        弹出个窗口(自己设计的窗口)输入服务器名和数据库的登录名、密码
        错误信息: my->Message.c_str() 
    }
      

  2.   

    我以前用的都是
    try
      ADOConnection1.connectstring='........';
      ADOConnection1.Connected := True;
      if ADOConnection1.Connected then
         showmessage('连接成功');
    except
      showmessage();
    end;
    你在把COnnectTimeout改成5好了,就是5秒连接不上就保你的错误
    一直都行的,如果机器不通的话,时间等的久一点,就会出现我的提示信息,不再delphi里面运行的时候才是,在里面运行肯定出现她的错误                 
      

  3.   

    uses AdoConEd;//加这个单元if EditConnectionString(adoconnection1) then//调出那个窗口
       begin
          sConn:=adoconnection1.ConnectionString;
      

  4.   

    uses AdoConEd;//加这个单元try
      ADOConnection1.connectstring='........';
      ADOConnection1.Connected := True;
      if ADOConnection1.Connected then
         showmessage('连接成功');
    except
      if EditConnectionString(adoconnection1) then//调出那个窗口
       begin
          sConn:=adoconnection1.ConnectionString;
     {....}
    end;
      

  5.   

    把Login属性设为false, 加入自己的登录窗口,替换注册表中connectstring中用户名、口令。可根据需要(如3次错误)退出程序
      

  6.   

    我试了,不行。总是提示:[DBNETLIB][ConnectionOpen(Connect()).]SQL Server does not exist or access denied.就是不弹出我设计的窗体,运行可执行文件也不行。
      

  7.   

    我以前也遇到过类似的问题,在服务器死机时,客户机器会出现一段长时间的停滞,后来,是使用前,在程序代码中,先Ping对方IP,当然,可能会有另外的问题,对方是开机的,但没起该服务,还是不能完全解决问题!