web-dev-qa-db-ja.com

JDBCを介してSQL Serverの「メッセージ」を取得する方法はありますか?

「メッセージ」とは、次の図の「メッセージ」タブを意味します。これには、「警告」、「n行の影響」、および下図の実行時間が含まれます。 JDBCでは、ResultSetクラスを使用して「結果」を取得します。 JDBCを介して[メッセージ]タブのすべての情報を取得する方法はありますか?

enter image description here

5
zli89

それらのメッセージのほとんどを取得できますが、残念ながらすべてではありません。これについては Stackoverflowに関する私の質問 を参照してください。

一般に、これらのメッセージ(PRINTステートメントからのメッセージなど)は、JDBCドライバーによってStatementオブジェクトに対する警告として返されます。それらを取得するには、ループでStatement.getWarnings()を使用します。

Statement stmt = ...;
stmt.execute("some_procedure");

SQLWarning warning = stmt.getWarnings();

while (warning != null)
{
   System.out.println(warning.getMessage());
   warning = warning.getNextWarning();
}

Statementではなく、Connectionインスタンスにもいくつかのメッセージが返されるのを見ました。何も表示されない場合は、Connectionインスタンスで上記のコードを試してください。