1. 问题简介:
一般情况下,使用程序连接数据库的时候,当数据库服务器不存在,或者数据库服务器没有启动的时候,
会导致数据库连接失败,所花费的时间很长。所以,在进行连接前,有必要对这些做出判断,然后返回给用户一
个正确的提示信息,减少等待的时间。
2. 数据库服务器连接不上,可以分成以下几种情况:
1>. 根本就不存在数据库服务器,及系统根本就没有安装数据库服务器。
2>. 系统安装了数据库服务器,但是数据库服务器没有开启。
3>. 数据库服务器开启了,但是处于【暂停】或者【停止】的状态。
4>. 当然还有最常见的,就是连接信息有问题。
解决办法:
1.最简单的办法,直接使用异常提供的信息,Delphi的异常中,提供的错误类型很完善。
例如:
procedure TForm1.btn1Click(Sender: TObject);
begin
try
adocon1.Connected:=True;
except
on E:exception do
Showmessage(E.message)
end;
end;
注意: 但是在数据库服务【停止】或者【未安装】的情况下,由于连接数据库抛出异常有一个超时时间,
所以提示用户连接不上所需时间很长,所以可以先判断是否安装,和数据库服务器是否开启(需要以下办法),
然后又异常来判断服务器是在【启动】状态,还是在【暂停】状态。
2.通过注册表判断系统是否安装了SQL Server数据库。
uses Registry;
procedure TForm1.btn1Click(Sender: TObject);
var
ARegistry: Tregistry;
cdkey:string;
begin
ARegistry := Tregistry.Create;
ARegistry.RootKey := HKEY_LOCAL_MACHINE;
try
ARegistry.OpenKey('SOFTWARE\MICROSOFT\MICROSOFT SQL SERVER\80\Registration', False);
cdkey := ARegistry.ReadString('CD_KEY');
if cdKey ='' then
showmessage('没有安装SQL Server数据库')
else
showmessage('安装了SQL Server数据库')
except
ARegistry.Destroy;
end;
end;
注意:<1>.如果安装的是绿色版,注册表中不存在信息,不可以使用这种办法。
<2>.安装SQL Server之后卸载,注册表中的信息没有修改,所以判断可能是不正确,会提示已经安装。
3. 通过进程判断SQL Server数据库服务器是否开启
uses Tlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessList : Thandle;
pe : TPROCESSENTRY32;
ProcList : TStringList;
i : integer;
begin
ProcList := TStringList.Create;
try
ProcessList := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize := sizeof(TPROCESSENTRY32);
if process32first(ProcessList,pe) then
begin
ProcList.Add(pe.szexefile);
while process32next(ProcessList,pe) do
ProcList.Add(pe.szexefile);
end;
for i := 0 to ProcList.Count -1 do
if ProcList[i] = 'sqlservr.exe ' then
ShowMessage( 'SQL Server already Run! ');
finally
ProcList.Free;
end;
end;
注意:SQL Server服务器的三种状态:
<1>.【启动】:进程中有 'sqlservr.exe',能进行访问连接。
<2>.【暂停】:进程中有 'sqlservr.exe',不能进行访问连接。
<3>.【停止】:进程中没有 'sqlservr.exe',不能进行访问连接。
在【暂停】或者【停止】的暂停下,不允许进行连接。
scm -action 1 -slient 1 -service mssqlserver //启动
scm -action 6 -slient 1 -service mssqlserver //停止
1. 问题简介:
一般情况下,使用程序连接数据库的时候,当数据库服务器不存在,或者数据库服务器没有启动的时候,
会导致数据库连接失败,所花费的时间很长。所以,在进行连接前,有必要对这些做出判断,然后返回给用户一
个正确的提示信息,减少等待的时间。
2. 数据库服务器连接不上,可以分成以下几种情况:
1>. 根本就不存在数据库服务器,及系统根本就没有安装数据库服务器。
2>. 系统安装了数据库服务器,但是数据库服务器没有开启。
3>. 数据库服务器开启了,但是处于【暂停】或者【停止】的状态。
4>. 当然还有最常见的,就是连接信息有问题。
解决办法:
1.最简单的办法,直接使用异常提供的信息,Delphi的异常中,提供的错误类型很完善。
例如:
procedure TForm1.btn1Click(Sender: TObject);
begin
try
adocon1.Connected:=True;
except
on E:exception do
Showmessage(E.message)
end;
end;
注意: 但是在数据库服务【停止】或者【未安装】的情况下,由于连接数据库抛出异常有一个超时时间,
所以提示用户连接不上所需时间很长,所以可以先判断是否安装,和数据库服务器是否开启(需要以下办法),
然后又异常来判断服务器是在【启动】状态,还是在【暂停】状态。
2.通过注册表判断系统是否安装了SQL Server数据库。
uses Registry;
procedure TForm1.btn1Click(Sender: TObject);
var
ARegistry: Tregistry;
cdkey:string;
begin
ARegistry := Tregistry.Create;
ARegistry.RootKey := HKEY_LOCAL_MACHINE;
try
ARegistry.OpenKey('SOFTWARE\MICROSOFT\MICROSOFT SQL SERVER\80\Registration', False);
cdkey := ARegistry.ReadString('CD_KEY');
if cdKey ='' then
showmessage('没有安装SQL Server数据库')
else
showmessage('安装了SQL Server数据库')
except
ARegistry.Destroy;
end;
end;
注意:<1>.如果安装的是绿色版,注册表中不存在信息,不可以使用这种办法。
<2>.安装SQL Server之后卸载,注册表中的信息没有修改,所以判断可能是不正确,会提示已经安装。
3. 通过进程判断SQL Server数据库服务器是否开启
uses Tlhelp32;
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessList : Thandle;
pe : TPROCESSENTRY32;
ProcList : TStringList;
i : integer;
begin
ProcList := TStringList.Create;
try
ProcessList := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe.dwSize := sizeof(TPROCESSENTRY32);
if process32first(ProcessList,pe) then
begin
ProcList.Add(pe.szexefile);
while process32next(ProcessList,pe) do
ProcList.Add(pe.szexefile);
end;
for i := 0 to ProcList.Count -1 do
if ProcList[i] = 'sqlservr.exe ' then
ShowMessage( 'SQL Server already Run! ');
finally
ProcList.Free;
end;
end;
注意:SQL Server服务器的三种状态:
<1>.【启动】:进程中有 'sqlservr.exe',能进行访问连接。
<2>.【暂停】:进程中有 'sqlservr.exe',不能进行访问连接。
<3>.【停止】:进程中没有 'sqlservr.exe',不能进行访问连接。
在【暂停】或者【停止】的暂停下,不允许进行连接。
scm -action 1 -slient 1 -service mssqlserver //启动
scm -action 6 -slient 1 -service mssqlserver //停止
分享到:
相关推荐
在做数据库开发的时候经常会遇到数据库连不上的情况,这个时候程序就会卡死,要等好长时间才能有反应,为此就做了一个快速数据库边接的...2:判断1433端口是否打开 本程序在delphi 2007环境下开发,在xp环境下开发成功
delphi:SQLserver服务器文件上传下载的例程。任意类型文件的上传下载例程,代码简洁明了,注释清晰,绝对一看就会!
演示了如何使用delphi连接远程sqlserver数据库,可以是因特网上的服务器。
DELPHI 测试连接SQL SERVER数据库
SQL Server服务器同步备份,delphi源码
Delphi获取网络中的SQL服务器名称..rar
源码:用Delphi 的SQL Link创建基于SQL Server的客户/服务器应用 运行环境:winxp delphi7 sql server2000
SQL Server服务器同步备份,SQL Server服务器同步备份
delphiXE7环境下开发的android程式,通过服务器地址连接SQL SERVER2008数据库后对里面的表进行insert,modify,delete等操作。
用Delphi的SQL Link创建基于SQL Server的客户_服务器应用.pdf
能够使用该程序备份数据库,把程序放在服务器上备份本机的数据库,这里使用delphi源码,备份sqlserver2000数据库,你可以看了源码后进行改进。
Delphi SqlServer开发的传票系统,查询生产量的统计情况,达到企业对各个机台机种的生产情况有了更深的了解。四大模块功能:用户管理、基础数据维护、传票输入、传票明细查看。每模块有若干细分功能,不再多述。
Delphi版SQL查询分析器,程序简单易用,可以连接本地SQL服务器快速执行脚本,也可以连接远程SQL服务器,客户端不需要安装MS SQL Server,环境:Win2000/WinXP/Win2003 工具:Delphi 7 数据库:MS SQL SERVER 2000 ...
第1篇为基础篇,介绍了SQL Server 2005的入门知识、如何安装SQL Server 2005、如何管理与配置SQL Server 2005服务器、如何配置SQL Server 2005网络、如何通过SQL Server Management Studio操作及管理SQL Server 2005...
摘要:Delphi源码,网络相关,枚举,局域网 Delphi枚举局域网SQL服务器,可以检测到局域网内的SQLServer服务器名称,功能比较单一,仅此而已,觉得有需要的就下载源程序吧。
介绍了在以Delphi 70作为前台开发工具,SQL Server 2000作为后台服务器开发数据库过程中, JPEG格式图像数据存储和读取显示的两种方法,即内存流法和路径链接法。使用内存流法可以减少磁盘操作,更易于数据库的维护...
只要客户端计算机支持TCP/IP的连接方式即可,不过对于应用程序服务器来说,必须额外运行Scktsrvr.exe(该程序在Delphi安装路径的“Borland\Delphi7\Bin”文件夹内)以打开对应的SocketServer程序。 2、运行程序时要...
辞职之后根据在公司时做的c/s客户管理系统的需求,另行设计的基于midas的面试作品,只有客户端的源码,呵呵,服务器和注册机以及数据库配置的模块是看不到源码的,可以从本人的资源里找到。不过欢迎本事大的人破解,...
当从命令提示符下启动 SQLServer 时,可使用该选项缩短启动 SQL Server 的时间。(注意:当使用该选项时,无法通过使用 SQLServer 服务管理器或 net stop 命令停止 SQL Server,而且如果已从 Microsoft Windows NT? ...
本文介绍Delphi连接SQl Server的方法。启动SQl服务器,启动Delphi,放置所需控件,设置各控件的连接参数,设置完成后点击测试连接。