PreparedStatementを作成するときに、 '?'を使用します。 charsを設定されたパラメータに置き換えます。PreparedStatementのSQL文字列の表示方法は?
これらのパラメータを設定した後、最終的なSQL文字列を確認するにはどうすればよいですか?
PreparedStatementを作成するときに、 '?'を使用します。 charsを設定されたパラメータに置き換えます。PreparedStatementのSQL文字列の表示方法は?
これらのパラメータを設定した後、最終的なSQL文字列を確認するにはどうすればよいですか?
最も簡単な方法(どのJDBCドライバでも使用できます)はlog4jdbcです。これは、ドライバをラップするプロキシであり、SQLとそのパラメータを組み合わせて読み取り可能な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'"
が記録されます:それはあなたが望むかどう
あなたのコードは、実際のSQL文字列にログにそれらを組み合わせることができます。 Could be that someone has actually implemented this before...
参照:[PreparedStatementのSQLを取得するにはどうすればよいですか?](http://stackoverflow.com/questions/2382532/how-can-i-get-the-sql-of-a-preparedstatement) – Reimeus