Можно ли протоколировать запросы SQL между приложением Delphi и базой данных MsAccess? - PullRequest
2 голосов
/ 06 декабря 2008

У меня есть приложение Delphi 7, использующее провайдера ADO/MSDASQL.1, и мне интересно, можно ли легко "регистрировать" запросы SQL, отправленные в БД? Так же, как профилировщик SQL в SQL Server?

Ответы [ 2 ]

6 голосов
/ 06 декабря 2008

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

procedure TForm23.ADOConnection1WillExecute(Connection: TADOConnection; var
  CommandText: WideString; var CursorType: TCursorType; var LockType:
  TADOLockType; var CommandType: TCommandType; var ExecuteOptions:
  TExecuteOptions; var EventStatus: TEventStatus; const Command: _Command;
  const Recordset: _Recordset);
begin
   LogToFile( CommandText );
end;
1 голос
/ 07 декабря 2008

Я делаю что-то похожее, но все мои запросы проходят через одну точку. Это было простое изменение, чтобы добавить протоколирование на этом этапе. Другой вариант - создать класс TLogADOQuery, который происходит от TADOQuery, и переопределить ExecuteSQL и Open для регистрации SQL, поступающего в базу данных. Затем вы заменяете все ссылки на TADOQuery новым классом.

...