[解決済み] PreparedStatementのSQLを取得するにはどうすればよいですか?
2022-04-30 07:39:19
質問
次のようなメソッドシグネチャを持つ一般的なJavaメソッドがあります。
private static ResultSet runSQLResultSet(String sql, Object... queryParams)
接続を開始し
PreparedStatement
のSQL文とパラメータを使用しています。
queryParams
可変長配列のキャッシュを作成し、それを実行します。
ResultSet
(この場合
CachedRowSetImpl
)、接続を閉じ、キャッシュされた結果セットを返します。
メソッドの中で例外処理を行い、エラーをログに記録しています。デバッグに非常に役立つので、ログの一部としてSQL文を記録しています。私の問題は、ロギングがString変数
sql
は、実際の値ではなく、?が付いたテンプレートステートメントをログに記録します。私は
実際の
ステートメントが実行された(または実行しようとした)。
で実行される実際のSQL文を取得する方法はないでしょうか?
PreparedStatement
? (
なし
自分で作る もし、アクセスする方法が見つからなかったら
PreparedStatement's
のSQLを自分で構築することになりそうです。
catch
をご覧ください)。
解決方法は?
プリペアドステートメントを使用すると、"SQLクエリ"が存在しない。
-
プレースホルダーを含むステートメントがあります。
- DBサーバーに送信されます。
- そこで準備される
- つまり、SQL 文が分析され、解析され、それを表すデータ構造がメモリに準備されます。
-
そして、バインドされた変数があります。
- サーバに送信される
- そして、プリペアドステートメントが実行され、これらのデータで作業します。
しかし、実際のSQLクエリを再構築することは、Java側でもデータベース側でもありません。
つまり、プリペアドステートメントのSQLは存在しないので、取得する方法はありません。
デバッグのために、解決策としては、:
- ステートメントのコードを、プレースホルダーとデータのリストとともに出力します。
- または、手作業でSQLクエリを作成する。
関連
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java の例外が発生しました java
-
IllegalArgumentException この例外を解決する方法
-
Eclipseプロンプトを実行する java仮想マシンを使用しない
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
アイデア Springboot Web プロジェクトを jar にパッケージ化する場合、Error: 無効または破損した jarfile x.jar 解決策
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み] java.sql.PreparedStatementからクエリを取得する [重複]。