В процессе разработки и тестирования приложений на Delphi часто возникает потребность в проверке того, к какой именно базе данных подключено приложение. В случае использования старых версий Delphi, например, Delphi 6, и компонентов DBExpress, может потребоваться дополнительная настройка для отображения названия базы данных, к которой подключен объект TSqlConnection.
Проблема
При тестировании приложения на Delphi 6 пользователь столкнулся с необходимостью отображения названия базы данных, к которой подключен компонент TSqlConnection. В конфигурационном файле sqlconnections.ini было определено подключение с именем 'Vienna' к базе данных Firebird с использованием алиаса. Для тестирования был изменен алиас базы данных, но при попытке получить название базы из списка параметров Params компонента TSqlConnection, полученное значение не соответствовало текущему подключению.
Решение
В Firebird с версии 2.1.x были введены таблицы мониторинга, которые позволяют получить информацию о текущем подключении. Для этого можно использовать следующий SQL-запрос:
SELECT MON$DATABASE_NAME FROM MON$DATABASE
или
SELECT MON$ATTACHMENT_NAME FROM MON$ATTACHMENTS
WHERE MON$ATTACHMENT_ID = CURRENT_CONNECTION
Дополнительную информацию можно найти в следующих источниках:
README файл с описанием таблиц мониторинга (C:\Program Files (x86)\Firebird\Firebird_2_1\doc\README.monitoring_tables.txt)
Также, если свойство SQLConnection.Params пусто, то даже после выполнения событий BeforeConnect или AfterConnect, свойство Params.Values['Database'] будет возвращать пустую строку. В таком случае можно использовать событие OnLogin компонента TSqlConnection, чтобы получить необходимую информацию:
procedure TForm11.SQLConnection1Login(Database: TSQLConnection; LoginParams: TWideStrings);
var
i: Integer;
begin
// Показать все параметры
for I := 0 to LoginParams.Count - 1 do
ShowMessage(LoginParams[I]);
// Показать название базы данных
ShowMessage(LoginParams.Values['Database']);
end;
Обратите внимание, что событие OnLogin срабатывает только если свойство LoginPrompt установлено в True.
Заключение
Для проверки названия базы данных, к которой подключен компонент TSqlConnection в Delphi 6, можно использовать таблицы мониторинга Firebird или событие OnLogin компонента TSqlConnection. В зависимости от версии Firebird и настройки приложения, следует выбрать наиболее подходящий способ.
Проверка подключения к базе данных в Delphi 6 с целью отображения ее названия, используя компоненты DBExpress и возможности мониторинга баз данных Firebird.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS