检查SQL Server是否可访问

时间:2015-01-30 10:21:50

标签: delphi delphi-xe7

我想登录到SQL Server实例(MSSQLSERVER)和特定数据库(DB1)。我怎么能用Delphi做到这一点?一种很好的方式可以涵盖异常和明智的警告信息?

编辑:我想看看如何解决这个问题的一个有效例子。

Edit2:我试过这种方式,但我想知道这是否正常

procedure TForm1.Button1Click(Sender: TObject);
begin
 UNIConnection1.Server := 'MSSQLSERVER';
 UNIConnection1.ProviderName := 'SQL Server';
 UNIConnection1.Username := 'username';
 UNIConnection1.Password := 'password';
 UNIConnection1.Database := 'DB1';
 UNIConnection1.LoginPrompt := False;
 try
 UNIConnection1.Connect;
 StatusBar1.SimpleText:= 'Server is running.';
 except
  on E: Exception do
      ShowMessage('Server is not reachable');
end;
end;

2 个答案:

答案 0 :(得分:2)

这样的东西? :

procedure TForm1.Button1Click(Sender: TObject);
begin
if (button1.Caption='Connect') then
 begin
 UNIConnection1.Server := 'MSSQLSERVER';
 UNIConnection1.ProviderName := 'SQL Server';
 UNIConnection1.Username := 'username';
 UNIConnection1.Password := 'password';
 UNIConnection1.Database := 'DB1';
 UNIConnection1.LoginPrompt := False;
 try
 UNIConnection1.Connect;
 StatusBar1.SimpleText:= 'Server is running.';
 Button1.Caption:='Disconnect';
 except
  on E: Exception do
  StatusBar1.Simpletext := 'Connection error: '+e.message; 
  end;
 end else
 if (button1.Caption='Disconnect')   then
  begin
    UNIConnection1.Disconnect;
    Button1.Caption:='Connect';
    StatusBar1.SimpleText:= 'Server is not running.';
  end;
  end;

您也可以添加:

procedure TForm1.UniConnection1BeforeConnect(Sender: TObject);
begin
StatusBar1.SimpleText:= 'Waiting for connection.....';
end;

此外,您应该考虑为连接添加超时:

  

UniConnection.SpecificOptions.Values ['ConnectionTimeout']:='60';

编辑:我已经更改了代码,并为错误消息添加了Johns建议....

答案 1 :(得分:-1)

让Windows完成工作。您可以创建一个“udl”文件,然后通过双击或从您的程序中使用例如win explorer打开它。 ShellExecute的。它提供了一个配置对话框,它在第二页上有一个“测试连接”按钮。