小弟学习Delphi遇到一个连接数据库的问题想请教各位大哥!
资料上这样写的:
----------------------------------------------------------------------------------------------------
当发布一个使用 ADO 连接的应用程序时,将连接字符串信息用UDL文件保存,程序读取UDL文件的信息,
这样,只需要更改UDL文件的内容,就可以完成连接字符串的更改。方法如下:
新建一个空白的文本文件 
将文本文件改名为connect.udl 
然后打开这个UDL文件,设置连接字符串 
在程序中将刚才UDL文件信息传递给ADO组件的connectString 属性,DELPHI下的一个例子:   
   try
      ADOConnection1.Connected := FALSE;
      ADOConnection1.ConnectionString := 'FILE NAME='+ExtractFilePath(ParamStr(0))+'\connect.udl';
      ADOConnection1.Provider := ExtractFilePath(ParamStr(0))+'\connect.udl';
      ADOConnection1.Connected := false;
      ADOConnection1.LoginPrompt := false;
   except
      exit;
   end;
-----------------------------------------------------------------------------------------------------
于是我按照自己理解的做了一个连接。
过程如下:    1.在SQL Server 2000中建立一个数据库,数据库中建立一个表...
    2.新建一个空白的文本文件 ,将文本文件改名为connect.udl 。
    3.然后打开这个UDL文件,设置连接字符串。测试成功。
    4.打开Delphi 7.0新建立一个工程。(此工程所有文件保存在connect.udl同一目录下。)
    5.在form1的窗体上加了ADOConnection1
    6.添加form1的OnCreate事件如下:    procedure TForm1.FormCreate(Sender: TObject);
    begin
       try
         ADOConnection1.Connected:=FALSE;
         ADOConnection1.ConnectionString:='FILE NAME='+ExtractFilePath(ParamStr(0))+'\connect.udl';
         ADOConnection1.Provider:=ExtractFilePath(ParamStr(0))+'\connect.udl';
         ADOConnection1.Connected:=false;
         ADOConnection1.LoginPrompt:=false;
         showmessage('连接成功!');
       except
         showmessage('连接失败!');
         exit;
       end;
   end;
出现的问题是:    无论我将SQLSERVER启动还是停止,都是显示的是“连接成功!”
可能是小弟没有正确理解资料上的含义,请各位大哥指点指点,帮帮我,小弟感恩不尽!

解决方案 »

  1.   

    UDL没用过,不过,使用ADO直接连我觉得蛮好。
    ConnectionString := 'Provider=SQLOLEDB.1;Password=yangekongzhi;Persist Security Info=True;User ID=kdxkuser;Initial Catalog=kdxk;Data Source=XX';XX是你的服务名称.
      

  2.   

    ADOConnection1.Connected:=false; 
    应该是True
      

  3.   

    1楼和2楼的兄弟,谢谢你们回我的帖子!
    ----------------------------------------------------------------------------------------
    ConnectionString   :=   'Provider=SQLOLEDB.1;Password=yangekongzhi;Persist   Security   Info=True;User   ID=kdxkuser;Initial   Catalog=kdxk;Data   Source=XX '; 
    XX是你的服务名称.^_^   如果这样设置的话,那程序外的connect.udl 文件根本就不会起到任何作用,
           使用connect.udl 文件,当文件的连接信息改变时,可以将此系统连接不同的服务器。
           如:将本系统移植到新的局域网,新的服务器名字不同与原来的服务器名。
               移植时只需要将connect.udl 文件的设置改变。就可以连接上。
               不需要修改程序就可以使该系统在新的网络上使用。
    ----------------------------------------------------------------------------------------
    ADOConnection1.Connected:=false;   
    应该是True^_^   这样设置的目的是:使程序中的ADOConnection1组件,不让其连接
           而让其通过获得connect.udl 文件中的信息,按照connect.udl 文件中配置来进行连接。
    ----------------------------------------------------------------------------------------请各位路过的大哥帮小弟看看罗,回一两句指点一下好吗,谢谢啊!
      

  4.   

    最后一条 
                     ADOConnection1.Connected:=false; 
    改为
                      ADOConnection1.Connected:=true; 
      

  5.   

    你连接上了然后False?感觉逻辑问题。。
      

  6.   

    谢谢楼上各位大哥的指点,今天再次尝试将:
        ADOConnection1.Connected:=false;   
    改为 
        ADOConnection1.Connected:=true; 
    的时候发现,当SQL服务关闭时会显示“连接失败!”
    看来参考资料上的东西不能全信啊!可是,同时却发现了另一个奇怪的问题:就是:
          当我把SQL服务关闭,执行时会显示“连接失败!”
          单击“ok”后,form1的窗口还是会打开!
          然后我将:
                   except 
                      showmessage( '连接失败! '); 
                      exit; 
                  end;
         改为:
                   except 
                      showmessage( '连接失败! '); 
                      form1.close; 
                  end;     还是一样的情况!      似乎 showmessage( '连接失败!'); 语句后的exit; 或form1.close; 都不起作用了。请楼上的大哥帮小弟分析一下原因好吗?  小弟万分感谢啊!