如何用delphi来搜索网络数据库,例如,搜索局域网内有哪些机器装有sql server服务器。多谢。

解决方案 »

  1.   

    呵呵赚了function GetSQLServerList(AList: TStrings): Boolean;
    var
       i: integer;
       vSQLServer: Variant;
       vServerList: Variant;
    begin
      Result := False;
      if AList = nil then Exit;
      AList.Clear;
      try
        vSQLServer := CreateOleObject('SQLDMO.Application');
        vServerList := vSQLServer.ListAvailableSQLServers;
        for i := 1 to vServerlist.Count do
          AList.Add (vServerlist.item(i));
        Result := True;
      finally
        vSQLServer := NULL;
        vServerList := NULL;
      end;
    end;
      

  2.   

    uses Comobj;
        procedure TForm1.Button1Click(Sender: TObject);
        var
        SQLServer:Variant;
        ServerList:Variant;
        i,nServers:integer;
        sRetValue:String;
        begin
          SQLServer := CreateOleObject('SQLDMO.Application');
          ServerList:= SQLServer.ListAvailableSQLServers;
          nServers:=ServerList.Count;
          for i := 1 to nservers do
          ListBox1.Items.Add(ServerList.Item(i));
          SQLServer:=NULL;
          serverList:=NULL;
        end;
      

  3.   

    //获取数据库服务器列表
    Function Tfrm_START.GetDataBaseServerName :String ;
    var
       SQLServer: Variant;
       ServerList: Variant;
       i , nServers: integer;
    begin
      Result := '' ;
      try
        SQLServer := CreateOleObject('SQLDMO.Application');
        ServerList:= SQLServer.ListAvailableSQLServers;
        nServers := ServerList.Count;
        if  nServers = 0 then
        begin
          MessageDlg('网络中没有数据库服务器!', mtWarning ,[mbYes],0);
          Exit;
        end
        else //有数据库服务器
        begin
          if not Assigned(frm_SQLServerName) then
          begin
            frm_SQLServerName := Tfrm_SQLServerName.Create(nil);
            try
              with frm_SQLServerName do
              begin
                for i := 1 to nservers do
                begin
                  ListBox1.Items.Add(ServerList.Item(i));
                end;
                case frm_SQLServerName.ShowModal of    //返回值
                mrOk:
                  begin
                    Result := ListBox1.Items[ListBox1.ItemIndex];
                  end;
                end;
              end; //with frm_SQLServerName do
            finally
              FreeAndNil(frm_SQLServerName);
            end;
          end; //if not Assigned(frm_SQLServerName) then
        end;
      finally
        SQLServer := Null;
        serverList := Null;
      end;
    end;