На главную страницу
Форум txt.version   




Статья :: Отладка приложений с технологией dbExpress

 

Отладка приложений с технологией dbExpress

Наряду с обычными методами отладки исходного кода, в dbExpress существует возможность контроля запросов, проходящих на сервер через соединение. Для этого используется компонент TSQLMonitor.

Через свойство

property SQLConnection: TSQLConnection;

компонент связывается с отлаживаемым соединением. Затем компонент включается установкой Active = True.

Теперь во время выполнения приложения сразу после открытия соединения свойство

property TraceList: TStrings;

будет заполняться информацией обо всех проходящих командах. Содержимое этого списка можно сохранить в файле при помощи метода

procedure SaveToFile(AFileName: string);

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

property FileName: string;

но только тогда, когда свойство

property AutoSave: Boolean;

будет иметь значение True. Свойство

property MaxTraceCount: Integer;

определяет максимальное число контролируемых команд, а также управляет процессом контроля. При значении -1 ограничения снимаются, а при значении 0 контроль останавливается. Текущее число проверенных команд содержится в свойстве

property TraceCount: Integer;

Перед записью команды в список вызывается метод-обработчик

TTraceEvent = procedure(Sender: TObject; CBInfo: pSQLTRACEDesc;

 var LogTrace: Boolean) of object; 

property OnTrace: TTraceEvent;

а сразу после записи в список вызывается

TTraceLogEvent = procedure (Sender: TObject; CBInfo: pSQLTRACEDesc) of object;

property OnLogTrace: TTraceLogEvent;

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

Если же компонент TSQLMonitor не подходит, можно воспользоваться методом

procedure SetTraceCallbackEvent(Event: TSQLCallbackEvent; IClientlnfo: Integer);

компонента TSQLConnection. Параметр процедурного типа Event определяет функцию, которая будет вызываться при выполнении каждой команды. Параметр iclientinfo должен содержать любое число.

Он позволяет разработчику самостоятельно определить функцию типа

TSQLCallbackEvent:

TRACECat = TypedEnum;

TSQLCallbackEvent = function(CallType: TRACECat; CBInfo: Pointer): CBRType; stdcall;

Эта функция будет вызываться каждый раз при прохождении команды. Текст команды будет передаваться в буфер CBInfo. Разработчику необходимо лишь выполнить запланированные действия с буфером внутри функции.

Рассмотрим в качестве примера следующий исходный код.

function GetTracelnfо(CallType: TRACECat; CBInfo: Pointer): CBRType;

stdcall;

begin

if Assigned(Forml.TraceList) then Forml.TraceList.Add(pChar(CBinfo));

 end;

procedure TForml.MyConnectionBeforeConnect(Sender: TObject);

 begin

TraceList := TStringList.Create; 

end;

procedure TForml.MyConnectionAfterDisconnect(Sender: TObject);

begin

if Assigned(TraceList) then

begin TraceList.SaveToFile('с:\Temp\TraceInfo.txt');

TraceList.Free;

 end;

 end;

procedure TForml.StartBtnClick(Sender: TObject);

 begin

MyConnection.SetTraceCallbackEvent(GetTracelnfo, 8);

MyConnection.Open;

{...}

MyConnection.Close;

 end;

Перед открытием соединения в методе-обработчике BeforeConnection создается объект типа TStringList. После закрытия соединения этот объект сохраняется в файле и уничтожается.

Перед открытием соединения (метод-обработчик нажатия кнопки Start) при помощи метода SetTraceCallbackEvent с соединением связывается функция GetTracelnfo.

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

Примечание 

В своей работе компонент TSQLMonitor также использует вызовы метода SetTraceCallbackEvent. Поэтому одновременно применять компонент и собственные функции нельзя.

 

Отладка приложений с технологией dbExpress

страницы в данном разделе 
 ГЛАВА 17  ГЛАВА 17Технология dbExpress
 Драйверы доступа к данным  Соединение с сервером баз данных
 Управление наборами данных  Транзакции
 Использование компонентов наборов данных  Класс TCustomSQLDataSet
 Компонент TSQLDataSet  Компонент TSQLTable
 Компонент TSQLQuery  Компонент TSQLStoredProc
 Компонент TSimpleDataSet  Способы редактирования данных
 Интерфейсы dbExpress  Интерфейс ISQLDriver
 Интерфейс ISQLConnection  Интерфейс ISQLCommand
 Интерфейс ISQLCursor  Отладка приложений с технологией dbExpress
 Распространение приложений с технологией dbExpress  Резюме


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста