Я работаю над приложением на Delphi 10.2, и оно подключается к базе данных SQL Server 2014. Что я могу сделать, чтобы проверить соединение с базой данных, имеющей строку подключения, до запуска приложения?
Я использовал ADoconnection
в качестве интерфейса для подключения к вышеупомянутой базе данных, выполнил некоторое кодирование с помощью try-catch или try-except, чтобы исключить нежелательные ошибки 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