热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何通过代码检查本机是否已安装SQLServer数据库?

RT。有代码解析最好了在网上查了些有通过检查注册表判断的方式,有通过列出局域网上SQLSERVER服务的方式1.检查注册表ARegistry:Tregistry
RT。

有代码解析最好了

在网上查了些  有通过检查注册表判断的方式,有通过列出局域网上SQLSERVER服务的方式

1.检查注册表
 ARegistry := Tregistry.Create;
 ARegistry.RootKey := HKEY_LOCAL_MACHINE;
  try
    ARegistry.OpenKey('SOFTWARE\MICROSOFT\MICROSOFT SQL SERVER\80\Registration', False);
    cdkey := ARegistry.ReadString('CD_KEY');
    ARegistry.CloseKey;
  except
     cdkey := '';
  end;
问题:不管是否已安装SQLSERVER ,cdkey的值始终等于 ''
      不知道我那个地方写的不对 还是这种判断方式有问题...

2.列出局域网上SQLSERVER服务
    SQLServer := CreateOleObject('SQLDMO.Application');
    ServerList := SQLServer.ListAvailableSQLServers;
    nServers := ServerList.Count;
    for i := 1 to nservers do
    begin
      showmessage(ServerList.Item(i)); //无法列出本机的服务名称,因此无法检查本机是否安装
    end;
    SQLServer := NULL;
    serverList := NULL;

各位帮忙看下错在哪儿  或者有没有更好的办法? 


8 个解决方案

#1


我用的是第二种方法

var
  SQLServer:Variant;
  ServerList:Variant;
  i,nServers:integer;
  sRetValue:String;
begin
  comServer.Clear;
  FileName.Text := ExtractFilePath(Application.ExeName) + 'contract';
  try
    SQLServer := CreateOleObject('SQLDMO.Application');
    ServerList:= SQLServer.ListAvailableSQLServers;
    nServers:=ServerList.Count;
    for i := 1 to nservers do
    comServer.Items.Add(ServerList.Item(i));
    comServer.ItemIndex := 0;
    SQLServer:=NULL;
    serverList:=NULL;
  except
    Application.MessageBox(PChar('您的计算机可能没有安装 SQL SERVER 2000,请直接填写服务器名称!'),PChar('信息提示'),MB_OK or MB_ICONINFORMATION);
    Exit;
  end;
end;

#2


to: bdmh

我现在根本就无法列出本机的服务名称...怎么检查得到呀
只能列出部分 局域网其他电脑的服务名称..

#3


我使用上面的代码 根本无法列出自己的SQL服务的  有问题 !

但是打开SQL Server Management Studio后再运行我的检查程序 又可以列出..  怎么办?

#4


采用ADOCONNECTION连接来判断
try
    oCn.Connected := False;
    oCn.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;'
      + 'Persist Security Info=False;Initial Catalog=''master'';Data Source=(LOCAL)';
    oCn.CommandTimeout := 0;
    oCn.Open;
    showmessage('已安装!');
  except
    showmessage('已安装!');
  end;
可以实现判断  但会不会对程序性能造成很大影响?

#5


第一第二种方法,程序可以运行,而且也不为空,没有异常,不知你出错在什么地方?

#6


to:ffwin

我使用那两种方法都可以运行 没有异常 但是

第一种:cdkey的值始终是空的
第二种:在不打开SQL Server Management Studio的情况下 无法获得本机服务

所以我觉得会不会是我的代码有什么问题,没有办法 最后我采用了
ADOCONNECTION连接 无法连接时捕获抛出的异常来判断是否有SQLSERVER服务

无奈啊...   你有没有其他更好的办法?

#7


我也是用第二种方法,用了好长时间了,没有发现有问题,呵呵

#8


两种方法都可以用的

推荐阅读
  • MapReduce统计每个用户的使用总流量
    1、原始数据2、使用java程序1)新建项目2)导包  hadoop-2.7.3\share\hadoop\mapreducehsfs的那些包commo ... [详细]
  • 本文主要介绍关于数据库,sql,sqlserver的知识点,对【数据库——概述】和【数据库到底要怎么做】有兴趣的朋友可以看下由【用编程写诗】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的数据库相 ... [详细]
  • 问题说明最近看到Spring事务,在学习过程中遇到一个很苦恼问题搭建好Spring的启动环境后出现了一点小问题在启动时候却出现[java.lang.NullPointerExcep ... [详细]
  • 本文整理了Java中com.atlassian.scheduler.config.JobConfig类的一些代码示例,展示了JobConfig ... [详细]
  • 看完这篇还搞不懂HTTPS,就来找我!
    本文将为大家详细梳理一下H ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 定制数据层关键字:数据层,访问,元数据,数据访问模型http://www.gaodaima.com/35448.html定制数据层_sqlserver ... [详细]
  • SqlServer分区表概述(转载)
    什么是分区表一般情况下,我们建立数据库表时,表数据都存放在一个文件里。但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件 ... [详细]
  • 发现很多时候展示一堆文字,需要让局部的某些字变粗啊,变大、变颜色、能点击等等要求,今天在这简单总结下方便日后直接复用(用ht ... [详细]
  • 是的,可以在RDSMySqlEngine中进行Master-Master复制。但它需要一些操作与实例。先决条件:1)为启用二进制日志记录创建两个实例的只 ... [详细]
  • 一、如果使用默认的1521端口,让实例自动注册到该监听上,那么local_listener无需设置,listener.ora文件按照正常方 ... [详细]
  • 一、域名解析记录说明记录类型A:用来指定域名的IPv4地址(如:8.8.8.8),如果需要将域名指向一个IP ... [详细]
  • Lodash中文文档(v3.10.1)–“Collection”要领TranslatedbyPeckZegOriginalDocs:Lodashv3.10.1Docs乞助翻译文档的 ... [详细]
  • 在目标队列中对消息进行排队时出现异常。错误:15404,状态:19。CouldnotobtaininformationaboutWindowsNTgroupuserSERVER ... [详细]
  • Oracle将表t_uaer的字段ID设置为自增:(用序列sequence的方法来实现)----创建表Createtablet_user(Idnumber(6),use ... [详细]
author-avatar
忄幹_856
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有