Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Использование SQLMonitor (DBExpress)

01.01.2007
Mike Goblin, mgoblin@mail.ru

Следи за собой - будь осторожен, или использование SQLMonitor.

Итак, остался всего один компонент на закладке dbExpress, не обследованный нами - это SQLMonitor. Как вы уже догадались, его задача - это протоколирование событий, происходящих в программе при обращении к базе данных. Протокол может выводиться как в StringList, так и файл.

  1. Создадим новый проект (File/ New Application).

  2. На главную форму положим SQLConection, SQLClientDataSet.

  3. Настроим SQLConnection на соединение с БД, а SQLClientDataSet на получение данных через SQLConnection. Свойства Connected SQLConnection и Active SQLClientDataSet установим в True. Все стандартно.

  4. Теперь положим на форму компонент - SQL Monitor.
    Посмотрим, какими свойствами и событиями он обладает:

    • Active Boolean - Активность монитора - вкл/выкл
    • AutoSave Boolean - Авто сохранение протокола в файл, имя файла должно быть указано в свойстве FileName
    • FileName String - Имя файла для сохранения протокола. Если свойство AutoSave установлено в true, то в указанный файл протокол записывается автоматически, если AutoSave :=false, то FileName используется как файл по умолчанию, для методов LoadFromFile, SaveToFile
    • SQLConnection TSQLConnection - Соединение с БД, работа с которым будет протоколироваться
    • TraceList TStrings - Содержимое протокола

    Методы:

    • LoadFromFile (AFileName:string) - Загрузить протокол из файла
    • SaveToFile (AFileName:string) - Сохранить протокол в файл

    События:

    • OnLogTrace TTraceLogEvent - Генерируется сразу после вставки нового сообщения в протокол
    • OnTrace TTraceEvent - Генерируется при наличии сообщения для протокола, перед его вставкой
  5. Что нам остается сделать - в компоненте SQLMonitor1 установить свойство SQLConnection равным SQLConnection1, а затем свойство Active SQLMonitor1 установим в True.

  6. Для вывода сообщений расположим на форме компонент Memo. Для его заполнения создадим обработчик события OnLogTrace компонента SQLMonitor1 со следующим кодом:

    Memo1.Clear;
    Memo1.LinesAddString(SQLMonitor1.TraceList);
    
  7. Всё, запускаем полученное приложение - читаем протокол.

У меня возник по поводу использования монитора только один вопрос (Кто идет за "Клинским"? :)

А как отслеживать не все события, а только какие-то определенные? Ответ нашелся довольно быстро.

Структура CBInfo:pSQLTraceDesc имеет поле eTraceCat, содержащее категорию произошедшего события. Однако у меня значение этого поля всегда было равно 256. Таким образом, нам остается только анализировать текст сообщения, находящийся в поле pszTrace вышеуказанной структуры.

Ну вот и все. Ваши замечания и предложения я рад буду увидеть в почтовом ящике mgoblin@mail.ru

Автор: Mike Goblin

Взято с сайта https://www.delphimaster.ru/

с разрешения автора.

Previous page:
Kylix Tutorial. Часть 4. Использование однонаправленных наборов данных
Top:
DRKB
Next page:
Поддерживает ли Kylix ODBC?