我想登录到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;
答案 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的。它提供了一个配置对话框,它在第二页上有一个“测试连接”按钮。