2017-08-12 13 views
1

私は、動的Webプロジェクトで、PreparedStatementを使用してDB2データベースに対してSQLクエリを実行しています。PreparedStatementがDB2で実行しようとしている完全なクエリを取得するにはどうすればよいですか?

String myQuery = "select id from user where name = ?"; 
PreparedStatement stmt = connection.prepareStatement(myQuery); 
stmt.setString(1, test); 
ResultSet resultSet = statement.executeQuery(); 

は、どのように私は、コンソールでDB2サーバー上で実行されようとしている完全なSQLクエリを受け取ることができますか?

+0

はドライバによって異なりますが、これは動作する場合と動作しない場合があります。 'stmt.toString()'を試してください。このためのネイティブサポートはありません。 'PreparedStatement'はインタフェースであり、そのような機能の実装を必要としません。 – user2914191

+0

javaで成功しない場合は、DB2に動的SQLとパラメータ・マーカー変数の値を報告するDBAと話をしてください。 DBAが使用するメカニズムは、DB2サーバーが稼動しているオペレーティング・システム(Z/OS、iシリーズ、Linux/Unix/Windows)とDB2バージョンとに依存します。 – mao

答えて

0

Eclipseのデバッグオプションに精通している場合は、あなたは次のことを試してください:

ResultSet resultSet = statement.executeQuery();

  • にブレークポイントを設定

    1. 右アプリケーションをクリックして、

    2. などDebug AsJava Applicationを選択します(またはIEはSpringBootのAppかもしれあなたのケースではどのような適用を言います

      質問に記載されたコードに進むステップを実行します。

    3. Variables tabをにチェックするとエクリプスの、あなたはあなたが必要とする完全なSQLクエリになりstmtの値として表示さ何であれ

    4. (あなたのコードによる)myQuerystmtのような変数があります。あなたはこの変数を見続けるしたくない場合

    また、常にあなたはJava Loggingを試してみて、ログの中にあなたの完全なSQLクエリを印刷することができます。

  • +0

    ソリューションについてはrdj7ありがとうございます。上記の手順を試して、期待される結果を確認することができます。 – chimbu

    +0

    すばらしい@chimbu !! – rdj7

    関連する問題