SQLServer数据库服务器名称的获取以及用户表的获取,怎么解决???

解决方案 »

  1.   

    刚在这个地方看到,楼主可去一下
    http://www.delphiun.com
      

  2.   

    数据库用一个TSession组件
    可以看帮助里的例子
    MyStringList := TStringList.Create;
    try 
      Session.GetDatabaseNames(MyStringList);
      { fill a list box with database names for the user to select from }
      ListBox1.Items := MyStringList;
    finally
      MyStringList.Free;
    end;
    ------------------------------------------
    表也可以用TDatabase,TADOConnection等组件可以看帮助里的例子
    MyStringList := TStringList.Create;
    try
      Session.GetTableNames('DBDEMOS', '*.db',False, False, MyStringList);
      { Add the table names to a list box }
      ListBox1.Items = MyStringList;
    finally
      MyStringList.Free;
    end;
      

  3.   

    如果用DataBase.GetTableNames(List: TStrings; SystemTables: Boolean = False);更简单。
    这些组件你 用'.'看一看还有根多你可以用的
      

  4.   

    {=================================================================
      功  能: 返回网络中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;
      

  5.   

    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;
      

  6.   

    首先感谢haipin了,明天我就去试一试了,OK
      

  7.   

    对了,第一上函数中的SQLServer := CreateOleObject('SQLDMO.Application');为什么我在机器上测试的时候报错说什么未定义之类的错误,错误地点是createobject
      

  8.   

    // 获取活动的 SQL Server 服务器列表
    type
      NET_API_STATUS = DWORD;  PServerInfo100 = ^TServerInfo100;
      _SERVER_INFO_100 = record
        sv100_platform_id: DWORD;
        sv100_name: LPWSTR;
      end;
      {$EXTERNALSYM _SERVER_INFO_100}
      TServerInfo100 = _SERVER_INFO_100;
      SERVER_INFO_100 = _SERVER_INFO_100;
      {$EXTERNALSYM SERVER_INFO_100}const
      NERR_Success = 0;
      MAX_PREFERRED_LENGTH = DWORD(-1);
      SV_TYPE_SQLSERVER    = $00000004;function NetApiBufferAllocate(ByteCount: DWORD; var Buffer: Pointer):
      NET_API_STATUS; stdcall; external 'netapi32.dll' name 'NetApiBufferAllocate';function NetServerEnum(ServerName: LPCWSTR; Level: DWORD; var BufPtr: Pointer;
      PrefMaxLen: DWORD; var EntriesRead: DWORD; var TotalEntries: DWORD;
      ServerType: DWORD; Domain: LPCWSTR; ResumeHandle: PDWORD): NET_API_STATUS;
      stdcall; external 'netapi32.dll' name 'NetServerEnum';function NetApiBufferFree(Buffer: Pointer): NET_API_STATUS; stdcall; external
    'netapi32.dll' name 'NetApiBufferFree';function GetSQLServerList(out AList: TStrings; pwcServerName: PWChar = nil;
      pwcDomain: PWChar = nil): Boolean;
    var
      NetAPIStatus: DWORD;
      dwLevel: DWORD;
      pReturnSvrInfo: Pointer;
      dwPrefMaxLen: DWORD;
      dwEntriesRead: DWORD;
      dwTotalEntries: DWORD;
      dwServerType: DWORD;
      dwResumeHandle: PDWORD;
      pCurSvrInfo: PServerInfo100;
      i, j: Integer;
    begin
      Result := True;
      try
        if  Trim(pwcServerName) = '' then
          pwcServerName := nil;    if Trim(pwcDomain) = '' then
          pwcDomain := nil;    dwLevel := 100;
        pReturnSvrInfo := nil;
        dwPrefMaxLen := MAX_PREFERRED_LENGTH;
        dwEntriesRead := 0;
        dwTotalEntries := 0;
        dwServerType := SV_TYPE_SQLSERVER;    
        dwResumeHandle := nil;               NetApiBufferAllocate(SizeOf(pReturnSvrInfo), pReturnSvrInfo);
        try
          NetAPIStatus := NetServerEnum(pwcServerName, dwLevel, pReturnSvrInfo,
            dwPrefMaxLen, dwEntriesRead, dwTotalEntries, dwServerType, pwcDomain,
            dwResumeHandle);      if (NetAPIStatus = NERR_Success) and (pReturnSvrInfo <> nil) then
          begin
            pCurSvrInfo := pReturnSvrInfo;        // 循环取得所有服务
            i := 0;
            j := dwEntriesRead;
            while i < j do
            begin
              if pCurSvrInfo = nil then
                Break;          with AList do
                Add(pCurSvrInfo^.sv100_name);          Inc(i);
              Inc(pCurSvrInfo);
            end;
          end;
        finally
          if Assigned(pReturnSvrInfo) then
            NetApiBufferFree(pReturnSvrInfo);
        end;
      except
        Result := False;
      end;
    end;
      

  9.   

    用法如下:
    var
      List: TStringList;
      lstBox: TListBox;
    begin
      List := TStringList.Create;
      try
        GetSQLServerList(List);
        lstBox.Items := List;
      finally
        List.Free;
      end;
    end;
      

  10.   

    好热闹,看来不用我再贴了
    个人支持haipin(今天你Delphi8了吗?) 的做法
      

  11.   

    1.在FORM上放一ADOCONNECTION1,要连接到MSSQLSERVER,关键是设置其CONNECTIONSTRING属性。
    如下代码:
      ADOCONNECTION1.ConnectionString := 'Provider=YourProvider;Password=SecretWord;' +
      'User ID=JaneDoe;SERVER=PURGATORY;UID=JaneDoe;PWD=SecretWord;' +
      'Initial Catalog=Employee';
    有三个关键之处,A.SERVER=PURGATORY,SERVER指的是你的数据库服务器名称,可以是IP地址也可以是名称。
                    B.User ID=JaneDoe,USER ID是用户名,如缺省为SA
                    C.Password=SecretWord,当然是密码啦,如缺省为空,为空时Password=SecretWord这一节可不要也就是说,要让你的程序启动后能够连接到数据库服务器,就必须在ADOCONNECTION连接前(必须是CLOSE状态),
    自已构造一个字符串,如以上所示,将你的数据库服务器的IP地址赋,即SERVER=服务器IP,然后将
    此字符串赋给CONNECTSTRING,然后OPEN;