Два программиста:
- Ко мне вчера чувак приходил, сервак сломал.
- Он что хакер?
- Нет, мудак!
function CheckMSSQLServer(fServerName, fUserName, fPsw : string) : Bool;
var
wDb : TDatabase;
begin// Check if MS SQL Server is reachable// Важно! BDE Должна быть установлена
Result := False;
wDb := TDatabase.Create(nil);
with wDb dobegin
DatabaseName := 'wDbDatabaseName'; // arbitrary name, must be unique// in current Session
Params.Values['SERVER Name'] := fServerName;
Params.Values['USER Name'] := fUserName;
Params.Values['PASSWORD'] := fPsw;
LoginPrompt := False;
end;
try
wDb.DriverName := 'MSSQL';
try
wDb.Connected := True;
wDb.Connected := False;
except
ShowMessage('Server is not reachable');
end;
Result := True;
finally
wDb.Free;
end;
end;
Программная функция Delphi для проверки доступности сервера MS SQL!
Давайте разберемся:
Функция CheckMSSQLServer принимает три параметра типа строка: fServerName, fUserName и fPsw. Она возвращает булевое значение, указывающее, доступен ли сервер.
Вот, что функция делает:
functionCheckMSSQLServer(fServerName,fUserName,fPsw:string):Bool;varwDb:TDatabase;begin// Создаем объект TDatabasewDb:=TDatabase.Create(nil);withwDbdobegin// Устанавливаем некоторые свойстваDatabaseName:='wDbDatabaseName';// произвольное имя, должно быть уникальным в текущем сеансеParams.Values['SERVER Name']:=fServerName;Params.Values['USER Name']:=fUserName;Params.Values['PASSWORD']:=fPsw;wDb.LoginPrompt:=False;// или wDb.LoginPrompt := false, как предложеноend;try// Устанавливаем имя драйвера в 'MSSQL'wDb.DriverName:='MSSQL';try// Пытаемся подключиться к серверуwDb.Connected:=True;Result:=True;// Если мы дошли до этого пункта, то сервер доступенexceptShowMessage('Server is not reachable');// Обрабатываем любые исключения, которые возникнут при подключенииend;finallywDb.Free;// Освобождаем объект TDatabaseend;end;
Вот несколько предложений:
Вместо использования LoginPrompt := False, можно использовать wDb.LoginPrompt := false для установки поведения запроса на вход в систему явно.
Блок try-except - это хорошая идея, но вам может быть полезнее логировать исключение вместо отображения сообщения об ошибке. Это позволит вам обрабатывать ошибки более элегантно в вашей приложении.
Вы не需要 устанавливать wDb.Connected := False после установки wDb.Connected := True. Подключение будет автоматически закрыто, когда объект будет освобожден.
В целом, функция выглядит хорошо! Она структурирована и легко понятна. Немного минорных изменений может сделать ее еще лучше.
В статье описывается функция в Delphi, которая проверяет доступность сервера MS SQL к сети, используя библиотеку BDE.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.