有一个方法是读取注册表,但我不知道注册表的键值是什么?
还有 sysdatabases 这张表在哪里打开?

解决方案 »

  1.   

    {=================================================================
      功  能: 返回网络中SQLServer列表
      参  数:
              List: 需要填充的List
      返回值: 成功:  True,并填充List  失败 False
      备 注:
      版 本:
        1.0  2002/10/02 22:44:00
    =================================================================}
    Function TPub.NetGetSQLServerList(var List: Tstringlist): boolean;
    var
       i: integer;
       SQLServer: Variant;
       ServerList: Variant;
    begin
      Result := False;
      List.Clear;
      try
        SQLServer := CreateOleObject('SQLDMO.Application');
        ServerList := SQLServer.ListAvailableSQLServers;
        for i := 1 to Serverlist.Count do
          list.Add (Serverlist.item(i));
        Result := True;
      Finally
        SQLServer := NULL;
        ServerList := NULL;
      end;
    end;
      

  2.   

    SQLServer数据库服务器名称的获取
    在窗口上放置一个listbox控件,命名为:listbox1,原代码如下所示:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      SQLServer:Variant;
      ServerList:Variant;
      i,nServers:integer;
    begin
     SQLServer := CreateOleObject('SQLDMO.Application');
     ServerList:= SQLServer.ListAvailableSQLServers;
     if serverlist.count<1 then
      begin //如果服务器不存在,则退出系统
         showmessage('服务器不存在,请检测服务器是否已经开机或者服务是否打开了');
         application.Terminate;
      end
     else
      begin
       for i:=1 to serverlist.count do
       listbox1.Items.Add(serverlist.item(i)) ;
       showmessage(serverlist.item(1)+'服务器已经打开,可以正常使用本系统');
       adoconnection1.ConnectionString:='Provider=SQLOLEDB.1;Persist Security info=False;UserID=sa;InitialCatalog=ideal_db;DataSource='+ServerList.Item(1);
      end;
     SQLServer:=NULL;
     serverList:=NULL;
    end;