CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

如何获得用ADOConnection1连接的服务器名和当前连接的数据库名

楼主snowview()2004-09-01 12:41:30 在 Delphi / 数据库相关 提问

如何获得用ADOConnection1连接的服务器名和当前连接的数据库名 问题点数:30、回复次数:5Top

1 楼pilicat(Delphi迷)回复于 2004-09-01 12:44:33 得分 0

//服务器名:  
  ShowMessage(ADOConnection1.Params['Server   Name']);  
   
  //数据库名:  
  ShowMessage(ADOConnection1.Params['DataBase]);Top

2 楼angle097113(深思不解)回复于 2004-09-01 12:47:04 得分 0

转贴:wdsimon(老王(路漫漫其修远兮,吾将上下而求索))    
  上面的说的都要在本机已经安装SQL的情况下才可以,用这个就不管它安装没有了:  
   
      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;  
   
  调用:  
  var  
      i:integer;  
      List:TStrings;  
  begin  
      List:=TStringList.Create;  
      if   GetSQLServerList(list)   then  
      begin  
          for   i:=0   to   list.Count-1   do  
                ComboBox1.Items.Add(list[i]);  
          ComboBox1.ItemIndex:=0;  
      end;  
  end;  
  http://community.csdn.net/Expert/topic/2920/2920663.xml?temp=5.581081E-03Top

3 楼snowview()回复于 2004-09-01 12:55:36 得分 0

to:pilicat(delphi迷)  
  提示Params没有定义Top

4 楼qizhanfeng(glacier)回复于 2004-09-02 09:30:46 得分 30

ShowMessage(ADOConnection1.DefaultDatabase);  
  ShowMessage(ADOConnection1.ConnectionString);  
  Data   Source=后面就是了Top

5 楼snowview()回复于 2004-09-02 10:16:03 得分 0

但是要分离出来好像很麻烦的Top

相关问题

  • 如何连接数据库服务器
  • ADOConnection 在 close后 oracle数据库服务器的会话中仍然保留连接,为什么?
  • 急求web服务器连接sybase数据库服务器(高分100)
  • 中间层服务器为什麽必须安装数据库才能连接其他数据库服务器?
  • 如何将DELPHI连接UNIX服务器上的Oracle7数据库?
  • 用DAO可否连接服务器上的oracle数据库?
  • 关于多线程连接数据库服务器,急!100分
  • 如何连接另一个服务器上的数据库。
  • 如何用TCP/IP连接SQL数据库服务器?
  • 连接另一个数据库服务器,如何实现!

关键词

  • 连接
  • 数据库
  • 服务器
  • server
  • adoconnection1
  • sv
  • info
  • dword

得分解答快速导航

  • 帖主:snowview
  • qizhanfeng

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo