Учись программированию на C++ Builder бесплатно!

Для получения информации о местах ошибок в SQL-запросах при отладке соединения приложения с сервером БД служит компонент SQLMonitor. Он осуществляет перехват сообщений между соединением и сервером баз данных и помещает их в список строк, определяемый свойством TraceList типа TStrings.

Для начала работы с компонентом нужно установить связь с соединением через свойство SQLConnection и активизировать его, задав свойству Active значение true.

Перед каждой записью сообщений в список строк возникает событие OnTrace, а сразу после записи в список возникает событие onLogTrace.

Тип события OnTrace

typedef void __fastcall(__closure *TTraceEvent)(System::TObject* Sender, pSQLTRACEDesc CBInfo, bool &LogTrace);

Тип события onLogTrace

typedef void __fastcall(__closure *TTraceLogEvent)(System::TObject* Sender, PSQLTRACEDesc CBInfo);

Содержимое списка можно сохранить в файле на жестком диске с помощью метода SaveToFile.

При задании свойству AutoSave типа bool значения true данные о проходящих командах автоматически заносятся в текстовый файл с именем, заданным значением свойства FileName типа Ansistring.
Свойство MaxTraceCount типа int определяет максимальное число контролируемых команд, а также управляет процессом контроля. При значении -1 ограничения снимаются, а при значении о контроль не выполняется. На число сохраненных в списке команд указывает свойство TraceCount типа int.

Пример отображения информации о сообщении

Пусть требуется выполнять оперативное отображение информации о последнем сообщении в окне многострочного редактора (компонент Memo1). Код будет следующим:

void __fastcall TForm1::SQLMonitorlLogTrace(TObject *Sender, pSQLTRACEDesc CBInfo)
{
	Memo1->Lines->Clear(); // Очищаем список
	Memo1->Lines = SQLMonitor1->TraceList; // Вводим данные в список
	SQLMonitor1->TraceList->Clear(); // Очистка списка сообщений
}

Как видно из приведенного кода, был использован обработчик события OnLogin. В качестве возможного варианта сообщения, отслеживаемого при работе компонента монитора, возможна строка вида:

INTERBASE - isc_dsql_free_statement

Будет перехвачено сообщение от сервера INERBASE.

Для автономного dbExpress-приложения нужны две динамически подключаемые библиотеки (DLL). Первая библиотека содержит драйвер dbExpress, например, для сервера БД InterBase это dbexpint.dll. Вторая библиотека это midas.dll, которая используется для поддержки компонента SQLClientDataSet. Обе библиотеки могут быть откомпилированы вместе с проектом и включены в *.ехе файл приложения.


Поиск по сайту