我正在开发 Delphi 10.2 上的应用程序,它连接到 SQL Server 2014 数据库。在应用程序启动之前,我可以做些什么来测试与具有连接字符串的数据库的连接?
我已将其用作ADoconnection
连接到上述数据库的接口,使用 try-catch 或 try-except 进行了一些编码以排除不需要的 SQL Server 错误,并使用仪表条指示我的启动过程的进展(进展与查询激活和表单创建)。
所以当连接字符串不正确时,我会得到一个错误
用户 'admin98' 登录失败
(admin98 是 SQL Server 用户的名称);并且当连接字符串正常时,仪表条会前进,并且在中途我再次遇到同样的错误。
注意:我使用了freeInstance
orNewInstance
或其他类似的东西,但它没有用。
这是连接数据库并在遇到错误时捕获错误的函数
function DBConnect: Boolean;
var
conStr : string;
begin
conStr:= 'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=admin'+Fstart_.year_combobox.Text+';PassWord=000;Initial Catalog=student'+Fstart_.year_combobox.Text+';Data Source='+Fstart_.StringTemp+';';
DataModule1.ADOConnection1.Close;
DataModule1.ADOConnection1.ConnectionString:= conStr;
DataModule1.ADOConnection1.LoginPrompt:= False;
if (NOT DataModule1.ADOConnection1.Connected) then
begin
try
DataModule1.ADOConnection1.Open;
Result:= True;
Except on E:Exception do
begin
if e.Message = 'Login failed for user '+chr(39)+'admin'+Fstart_.year_combobox.Text+chr(39) then
//showmessage
if e.Message = '[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied' then
//showmessage
DataModule1.ADOConnection1.Close;
DataModule1.ADOConnection1.ConnectionString:= '';
Result:= False;
end;
end;
end;
end;
问题是它必须工作,我不应该重新启动应用程序,所以我需要在连接之前进行测试或重置整个连接。
我希望连接成功,但即使我更改组合框值并且我知道用户存在于 SQL Server 中,我也会再次收到错误