PreparedStatement によって実行される実際の SQL の取得
Java プログラミングでは、データベース接続を開き、 PreparedStatement を取得して実行し、結果セットを返します。デバッグ目的の場合、実行された実際の SQL ステートメントをログに記録すると有益ですが、元の SQL テンプレート (プレースホルダー付き) をログに記録するだけでは十分ではありません。
PreparedStatement の SQL を取得できません
残念ながら、準備されたステートメントの性質により、実行される実際の SQL クエリを取得する方法はありません。準備されたステートメントは、ステートメント自体 (プレースホルダー付き) とバインドされた変数の 2 つのコンポーネントに分割されます。データベース サーバーはステートメントを分析および解析し、バインドされた変数を使用してステートメントを実行します。ただし、実際の SQL クエリの再構築は Java 側でもデータベース側でも行われません。
デバッグの代替手段
デバッグ目的には、次の 2 つの代替ソリューションがあります。
例
次のステートメントを考えてみましょう。プレースホルダー:
SELECT * FROM USERS WHERE ID = ?
バインド変数:
int userId = 123;
手動 SQL クエリは次のようになります:
SELECT * FROM USERS WHERE ID = 123
これはデバッグ目的でログに記録されます。
以上がJavaのPreparedStatementによって実行される実際のSQLを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。