如何判断本机是否已安装数据库平台(100分)

  • 主题发起人 主题发起人 shxcn
  • 开始时间 开始时间
S

shxcn

Unregistered / Unconfirmed
GUEST, unregistred user!
如何判断本机是否已安装数据库平台,如mysql,sql server,msde等等,是否要调用注册表。
 
begin
UserName:=FormDataBaseInfo.EditUserName.Text;
Password:=FormDataBaseInfo.EditPassword.Text;
ServerName:=FormDataBaseInfo.EditServerName.Text;
with TDatabase.Create(Application) do
begin
Try
DatabaseName:='TestDatabase';
//随便给DatabaseName命个名字就可以了。
LoginPrompt:=False;
DriverName:='MSSQL';
//这行是关闭TDatabase内置的登录对话框。
Params.Clear;
Params.Add('Server Name='+ServerName);
Params.Add('Database Name=MASTER');
Params.Add('User Name='+UserName);
Params.Add('Password='+Password);
Try
Open;//尝试打开数据库,如果正常打开,则说明SQL服务器工作正常,并且用户名和密码正确。
With TQuery.Create(Application) do
begin
try
DatabaseName:='TestDatabase';
SQL.Add('Select * from Sysdatabases Where Name="TestDB"');
try
Open;
Except
On E:Exception do
begin
Application.MessageBox(PChar('不能打开MASTER数据库的Sysdatabases表,请确认是否有打开该表的权限。'+#13#10#13#10+
'错误信息:'+E.Message),'提示:',MB_ICONERROR);
MainFormCreated:=False;
end;
end;
if MainFormCreated and IsEmpty then//如果返回为空则表示TestDB还没有创建。
begin
//SQL Server所有的用户数据库都在Master数据库的Sysdatabases表中有记录。
Close;
SQL.Clear;
SQL.Add('Create Database TestDB');
try
ExecSQL;
//这里用ExecSQL而不是用Open,是因为DataSet的Open方法只是用于打开SQL语是Select语句的返回结果集
//对于其它SQL语句因为没有返回集所以只能用ExecSQL来执行。
Except
On E:Exception do
begin
Application.MessageBox(PChar('不能创建数据库,请确认是否有创建数据库的权限。'+#13#10#13#10+
'错误信息:'+E.Message),'提示:',MB_ICONERROR);
MainFormCreated:=False;
end;
end;
end;
finally
Free;
end;
end;
Except
on E:exception do
begin
Application.MessageBox(PChar('不能打开数据库,请确认网络联接正常并稍后再试。'+#13#10#13#10+
'错误信息:'+E.Message),'提示:',MB_ICONERROR);
MainFormCreated:=False;
end;
end;
finally
Free;
end;
end;
end else
begin
MainFormCreated:=False;
Application.Terminate;//强行中止系统。
end;
finally
FormDataBaseInfo.Free;
end;
 
我要判断是否已安装数据库,如没有再安装数据库。康凌,此方法我早知道了,我不想通过
对数据库的连接成功与否来判断,此方法用时太长。
 
function TForm1.getserver: tstringlist;
var
SQLServer,ServerList:variant;
i,x:integer;
begin
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
x:=ServerList.Count;
result:=Tstringlist.Create ;
for i := 1 to x do
result.Add(ServerList.Item(i));
SQLServer:=NULL;
serverList:=NULL;
end;
判断本网络内有没有SQL Server数据库。并返回数据库所在的计算机名!
 
正好,我也想知道,上课了!
 
问题已解决,通过调用注册表信息就可以了。
如果[HKEY_LOCAL_MACHINE/Software/Microsoft/MSSQLServer]下存在MSSQLServer子键,则此
计算机已安装SQL SERVER或MSDE数据库平台,反则没有安装数据库平台。
对于大家的帮助我表示感谢!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部