📘

FDConnectionをトレースする

2024/12/22に公開

TFDMoniFlatFileClientLinkの使用方法

TFDMoniFlatFileClientLinkを使用することで、特定のFDConnectionに対してロギングを行うことができる。トランザクション周りの停止や遅延などの調査に利用できる。

TFDMoniFlatFileClientLinkは非ビジュアルコンポーネントととして実装されているため、GUIから利用するほうが楽。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
	TFDConnection *connection = new TFDConnection(NULL);
	connection->DriverName = "SQLite";
	connection->Params->Database = GetCurrentDir() + "\\MyDb.db";	// データベースファイルの場所を指定(バックグランドでCREATE DATABASEが動く)

	TFDQuery *query = new TFDQuery(NULL);
	query->Connection = connection;

        // トレースコンポーネントの生成
        TFDMoniFlatFileClientLink *monitor = new TFDMoniFlatFileClientLink(NULL);
        connection->Params->MonitorBy = mbFlatFile; // FDConnectionにモニター機能を割り当て
        monitor->FileName = "D:\\log.log";          // 出力ファイル名を指定
        monitor->Tracing = true;                    // ロギング開始

	// テーブル定義
	query->SQL->Clear();
	query->SQL->Text = "CREATE TABLE MyTable(id integer, name text, PRIMARY KEY(id))";
	query->ExecSQL();

	// テストデータ投入
	query->SQL->Clear();
	query->SQL->Text = "INSERT INTO MyTable(id, name) VALUES (1,'namae');";
	query->ExecSQL();

	// クエリ
	query->SQL->Clear();
	query->SQL->Text = "SELECT * FROM MyTable;";
	query->Open();
	int count = query->RecordCount;

        monitor->Tracing = false;                    // ロギング終了

        delete monitor;
	delete connection;
	delete query;
}

Discussion