2

プロバイダーを使用するDelphi7アプリを持っていADO/MSDASQL.1ますが、DBに送信されたSQLクエリを簡単な方法で「ログに記録」できるかどうか疑問に思います。SQL ServerのSQLプロファイラーと同じように?

4

2 に答える 2

6

アプリケーション内では、TADOConnection.OnWillExecuteイベントにコマンドを記録できます。コマンドテキストを保存するだけで済みますが、他の多くのオプションも記録できます。

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;
于 2008-12-06T12:24:32.993 に答える
1

私も似たようなことをしていますが、すべてのクエリは単一のポイントを通過します。この時点でロギングを追加するのは簡単な変更でした。もう 1 つのオプションは、TADOQuery から派生した TLogADOQuery クラスを作成し、ExecuteSQLOpenをオーバーライドして、データベースに送られる SQL をログに記録することです。次に、TADOQuery へのすべての参照を新しいクラスに置き換えます。

于 2008-12-06T21:45:45.920 に答える