Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как отслеживать статус соединения с базой данных в Delphi: индикатор с аварийными уведомлениями

Delphi , Базы данных , SQL

В процессе разработки программного обеспечения, особенно работающего с базами данных, важно иметь возможность отслеживать статус соединения, чтобы пользователи могли визуально понимать, доступна ли база данных в данный момент. В данной статье мы рассмотрим, как реализовать индикатор, который будет отображать статус соединения с базой данных в среде разработки Delphi, используя компоненты ADO и TThread.

Создание соединения с базой данных

Для начала создадим соединение с базой данных SQL Server. В коде ниже показано, как инициализировать TADOConnection и установить строку соединения:

procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
begin
  ADOConnectionSQL := TADOConnection.Create(nil);
  ADOConnectionSQL.LoginPrompt := False;
  s := 'Provider=SQLNCLI11.1;'+
    'Persist Security Info=False;'+
    'User ID='+Edit1.Text+';'+
    'Initial Catalog='+Edit2.Text+';'+
    'Data Source='+Edit3.Text+';'+
    'Initial File Name="";'+
    'Server SPN="";'+
    'password="'+Edit4.Text+'"';
  ADOConnectionSQL.ConnectionString := s;
end;

Отслеживание статуса соединения

Для отслеживания статуса соединения, вместо создания отдельного потока, который не будет использоваться для выполнения работы с базой данных, создадим поток, который будет иметь свою собственную копию соединения и компонента запроса. Это позволит выполнять операции с базой данных непосредственно в потоке, а также обновлять статус соединения в главном потоке пользовательского интерфейса.

procedure TForm1.Button1Click(Sender: TObject);
var
  Thread: TThread;
  ConnStr: string;
begin
  ConnStr := '...'; // Строка соединения, как выше
  Thread := TThread.CreateAnonymousThread(
    procedure
    var
      ADOConnectionSQL: TADOConnection;
      ADOQuerySQL: TADOQuery;
    begin
      CoInitialize(nil);
      try
        ADOConnectionSQL := TADOConnection.Create(nil);
        try
          ADOConnectionSQL.LoginPrompt := False;
          ADOConnectionSQL.ConnectionString := ConnStr;
          // Инициализация COM библиотеки для потока критично важно
          // Перед работой с ADO

          ADOConnectionSQL.Open;
          // Отправляем сообщение главному потоку
          // для обновления состояния визуального индикатора
          TThread.Queue(nil,
            procedure
            begin
              Circle1.Fill.Color := TAlphaColorRec.Green;
            end
          );
          ADOQuerySQL := TADOQuery.Create(nil);
          try
            ADOQuerySQL.Connection := ADOConnectionSQL;
            // Используем ADOQuerySQL по мере необходимости...
          finally
            ADOQuerySQL.Free;
          end;
        finally
          ADOConnectionSQL.Free;
        end;
      finally
        CoUninitialize;
      end;
    end);
  Thread.OnTerminate := SQLFinished;
  Thread.Start;
end;

procedure TForm1.SQLFinished(Sender: TObject);
begin
  Circle1.Fill.Color := TAlphaColorRec.Red;
  if TThread(Sender).FatalException <> nil then
  begin
    // Обработка аварийного уведомления при возникновении ошибок
    ShowMessage('Failure! ' + Exception(TThread(Sender).FatalException).Message);
  end;
end;

Инициализация визуального индикатора

По умолчанию, визуальный индикатор (в виде круга) устанавливается в красный цвет, что означает отсутствие соединения. После успешного выполнения операции открытия соединения, цвет индикатора обновляется на зеленый. Если поток завершается с ошибкой, цвет снова переключается на красный, и отображается сообщение об ошибке.

Заключение

Используя описанный подход, вы сможете создавать надежные индикаторы статуса соединения с базой данных, которые будут автоматически отражать текущее состояние соединения, без необходимости использования таймеров. Это позволит вашим пользователям быть в курсе состояния соединения с базой данных, что особенно важно при возникновении аварийных ситуаций, например, когда IP-адрес базы данных неверен.

Создано по материалам из источника по ссылке.

В статье рассматривается способ отслеживания статуса соединения с базой данных в среде разработки Delphi, используя компоненты ADO и TThread для создания индикатора с аварийными уведомлениями.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: SQL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 13:52:23/0.0053110122680664/1