Как проверить ADOConnection ConnectionString перед подключением к базе данных SQL Server в Delphi 10.2 - PullRequest
0 голосов
/ 31 марта 2019

Я работаю над приложением на Delphi 10.2, и оно подключается к базе данных SQL Server 2014.Что я могу сделать, чтобы проверить соединение с базой данных, имеющей строку соединения, до запуска приложения?

Я использовал ADoconnection в качестве интерфейса для соединения с вышеупомянутой базой данных, сделал некоторое кодирование с помощью try-catch илипопробуйте, кроме как исключить нежелательные ошибки SQL Server, и с помощью шкалы индикатора, чтобы указать на продвижение моей процедуры запуска (которая прогрессирует с активацией запроса и созданием формы).

Поэтому, когда строка подключения не в порядке, Я получу ошибку

Ошибка входа для пользователя 'admin98'

(admin98 - это имя пользователя SQL Server);и когда строка подключения в порядке, индикаторная линейка прогрессирует, и на полпути у меня снова та же самая ошибка.

ПРИМЕЧАНИЕ: я использовал freeInstance или NewInstance или другие подобные вещи, но это не такне работает.

Это функция, которая подключается к базе данных и ловит ошибки, если встречает

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

...