PreparedStatementを作成するときは、「?」を使用します。その後、文字は設定されたパラメータに置き換えられます。
これらのパラメータが設定された後、最終的なSQL文字列をどのように確認できますか?
PreparedStatementを作成するときは、「?」を使用します。その後、文字は設定されたパラメータに置き換えられます。
これらのパラメータが設定された後、最終的なSQL文字列をどのように確認できますか?
最終的なSQL文字列はありません。プレースホルダーのあるバージョンは、実際にサーバーに送信されるものです。プリペアドステートメントでクエリを実行すると、データは完全に個別に送信されます。
プレースホルダーを使用して文字列をログに記録し、次に各データセットを個別にログに記録できます。
必要に応じて、コードでログ内のそれらを実際のSQL文字列に結合できます。
String query = "SELECT a FROM b WHERE c = ?";
...
pstmt.setString(1, "asd");
logSQL( query, "asd");
logSQL
その後、実際にログに記録されます"SELECT a FROM b WHERE c = 'asd'"
。誰かが実際にこれを以前に実装したことがあるかもしれません...
(任意のJDBCドライバーで機能する)最も簡単な方法は、log4jdbcを使用することです。これは、ドライバーをラップし、SQLとそのパラメーターを組み合わせて読み取り可能なSQL文字列を作成してログに記録し、SQLとパラメーターを基になるドライバーに渡すプロキシです。