CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

sql server服务器列表?和网上领居浏览窗

楼主chinaandys(降龙十八炒&&蛋炒饭)2004-11-01 11:47:49 在 Delphi / 数据库相关 提问

1     如果电脑没有装sql   server怎么在listbox中获在sql   server服务器列表?  
   
  2     怎么显示网上领居浏览窗(如同DCOMconnection控件的computername属性),单击主机名添加到   edit1.text中了? 问题点数:0、回复次数:13Top

1 楼zv008(zv)回复于 2004-11-01 14:45:45 得分 0

你是不是要做一个数据库安装程序?Top

2 楼zv008(zv)回复于 2004-11-01 14:46:45 得分 0

给个过程你:  
   
  procedure   GetSQLServerLsit;  
  var  
      SQLServer:   Variant;  
      ServerList:   Variant;  
      i,   nServers:   integer;  
  begin  
      lst_SQLSrvList.Items.Clear;  
      try  
          SQLServer   :=   CreateOleObject('SQLDMO.Application');  
          ServerList   :=   SQLServer.ListAvailableSQLServers;  
          nServers   :=   ServerList.Count;  
          for   i   :=   1   to   nservers   do  
              lst_SQLSrvList.Items.Add(ServerList.Item(i));  
          SQLServer   :=   NULL;  
          serverList   :=   NULL;  
      except  
          Application.MessageBox('您当前的机器没有安装SQL   Server,无法导入SQL   Server服务器列表,'   +   #13   +   #10   +   '请直接输入SQL   Server服务器名称!',   '信息提示',   MB_OK   +  
              MB_ICONINFORMATION);  
      end;  
  end;Top

3 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2004-11-01 15:05:29 得分 0

To   zv008(zv)非常感谢你,对不起,说的不太清楚,是这样的:  
   
  1.一台电脑如果没有装SQL   SERVER,用什么方法获得网络中SQL   SERVER服务器列名并添加到listbox1  
   
  22     怎么显示网上领居浏览窗(如同DCOMconnection控件的computername属性),单击主机名添加到   edit1.text中了?  
  Top

4 楼Afei1(阿飞1)回复于 2004-11-01 15:35:20 得分 0

取得当前局域网中有装SQL   SERVER或有相应的数据库服务器  
  procedure   TMainCodeFrm.pGetServerName(var   aCombox   :   TCombobox);  
  var  
      SQLServer:   Variant;  
      ServerList:   Variant;  
      i   :   integer;  
  begin  
      SQLServer   :=   CreateOleObject('SQLDMO.Application');  
      ServerList   :=   SQLServer.ListAvailableSQLServers;  
      aCombox.Clear;  
      for   i   :=   1   to   ServerList.Count   do  
            aCombox.Items.Add(ServerList.Item(i));  
      SQLServer   :=   NULL;  
      serverList   :=   NULL;  
  end;Top

5 楼zv008(zv)回复于 2004-11-01 15:57:41 得分 0

1、看看那段代码吧。没装sqlserver是不能取得列表的。  
  2、是不是要查找网上邻居上所有的计算机名?Top

6 楼lw549(那个孩子他爹)回复于 2004-11-01 16:06:09 得分 0

1.PromptDataSource(GetActiveWindow,   '');Top

7 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2004-11-01 16:24:45 得分 0

To     lw549(那个孩子他爹)不行吗,麻烦你,再看一看,谢谢Top

8 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2004-11-01 16:28:12 得分 0

to     Afei1(阿飞1)   按你的方法,实现上是在有装SQL   SERVER机上获取列表的.  
   
  to   zv008(zv)   有何高见!第二题如同网上领居浏览对话框(如同DCOMconnection控件的computername属性)!Top

9 楼zv008(zv)回复于 2004-11-02 08:43:37 得分 0

给段代码你:  
   
  function   SelectComputer:   string;    
  var  
      WindowList:   Pointer;  
      BrowseInfo:   TBrowseInfo;  
      Buffer:   PChar;  
      RootItemIDList,   ItemIDList:   PItemIDList;  
      ShellMalloc:   IMalloc;  
  begin  
      Result   :=   '';  
      FillChar(BrowseInfo,   SizeOf(BrowseInfo),   0);  
      if   (ShGetMalloc(ShellMalloc)   =   S_OK)   and   (ShellMalloc   <>   nil)   then  
      begin  
          Buffer   :=   ShellMalloc.Alloc(MAX_PATH);  
          try  
              RootItemIDList   :=   nil;  
              SHGetSpecialFolderLocation(Application.Handle,   CSIDL_NETWORK,  
                  RootItemIDList);  
              with   BrowseInfo   do  
              begin  
                  hwndOwner   :=   Application.Handle;  
                  pidlRoot   :=   RootItemIDList;  
                  pszDisplayName   :=   Buffer;  
                  lpszTitle   :=   '选择机器名';  
                  ulFlags   :=   BIF_BROWSEFORCOMPUTER;  
              end;  
              WindowList   :=   DisableTaskWindows(0);  
              try  
                  ItemIDList   :=   ShBrowseForFolder(BrowseInfo);  
              finally  
                  EnableTaskWindows(WindowList);  
              end;  
              if   ItemIDList   <>   nil   then  
              begin  
                  Result   :=   StrPas(Buffer);  
                  ShGetPathFromIDList(ItemIDList,   Buffer);  
                  ShellMalloc.Free(ItemIDList);  
              end;  
          finally  
              ShellMalloc.Free(Buffer);  
          end;  
      end;  
  end;Top

10 楼zv008(zv)回复于 2004-11-02 08:44:17 得分 0

从对话框返回的计算机名Top

11 楼lw549(那个孩子他爹)回复于 2004-11-02 09:07:08 得分 0

怎么不行?代码来自,我一直用这个的,不用sqlserver客户端  
  unit   ADODB;  
   
  function   PromptDataSource(ParentHandle:   THandle;   InitialString:   WideString):   WideString;  
  var  
      DataInit:   IDataInitialize;  
      DBPrompt:   IDBPromptInitialize;  
      DataSource:   IUnknown;  
      InitStr:   PWideChar;  
  begin  
      Result   :=   InitialString;  
      DataInit   :=   CreateComObject(CLSID_DataLinks)   as   IDataInitialize;  
      if   InitialString   <>   ''   then  
          DataInit.GetDataSource(nil,   CLSCTX_INPROC_SERVER,  
              PWideChar(InitialString),   IUnknown,   DataSource);  
      DBPrompt   :=   CreateComObject(CLSID_DataLinks)   as   IDBPromptInitialize;  
      if   Succeeded(DBPrompt.PromptDataSource(nil,   ParentHandle,  
          DBPROMPTOPTIONS_PROPERTYSHEET,   0,   nil,   nil,   IUnknown,   DataSource))   then  
      begin  
          InitStr   :=   nil;  
          DataInit.GetInitializationString(DataSource,   True,   InitStr);  
          Result   :=   InitStr;  
      end;  
  end;Top

12 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2004-11-02 09:41:13 得分 0

to   lw549(那个孩子他爹)   ,谢谢老师,我试了一下,打开了UDL链接文件.  
  谢谢老师。对不起,我表达的不够清楚,是在客户端的listbox1显示网络中所有的SQL   SERVER服务器?(当客户端没有装SQL   SERVER时)  
   
  2     怎么显示网上领居浏览窗(如同DCOMconnection控件的computername属性),单击主机名添加到   edit1.text中了?  
   
  Top

13 楼chinaandys(降龙十八炒&&蛋炒饭)回复于 2004-11-02 10:14:01 得分 0

楼上的几位兄弟,大多原理实际上是调用   SQLDEMO.dll这个动态链接库的。如果没有装就没有这个动态链接库,也就不动用     createoleobject('SQLDEMO.application');....Top

相关问题

  • 如何取得 SQL Server 的服务器列表
  • 怎么列出指定网络SQL Server服务器中的数据库列表?
  • 如何获取当前网络上的SQL Server服务器列表
  • 如何取得局域网内所有sql server的服务器列表?
  • 怎样得到局域网内所有SQL Server服务器列表
  • SQL Server 服务器名称
  • 如何在winform程序中获取局域网内所有sql Server服务器的名称列表?
  • 怎样获取sql数据服务器名的列表?
  • SQL Server服务器注册不上
  • 登录不了服务器的SQL SERVER ?

关键词

  • 服务器
  • 浏览
  • sqlserver
  • 控件
  • 属性
  • 主机
  • 代码
  • serverlist
  • shellmalloc
  • datainit

得分解答快速导航

  • 帖主:chinaandys

相关链接

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

广告也精彩

反馈

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