2017-08-01 7 views
-3

何らかの理由で文がDBに正しくコミットできないことがあります。たとえば、接続が閉じている場合はstatement.execute()は失敗します。 どのクエリ文字列が正常にコミットできなかったのかを特定してログに記録するために、ステートメントを記録する方法を知っている人はいますか?クエリをログする方法コミットに失敗したSQL文の文字列?

+1

あなたはどういう意味ですか?あなたが何を求めているのか不明です。 [SSCCE](http://sscce.org/)をお読みください。 – Blasanka

答えて

1

一つの解決策は、IBMによってLoggableStatementクラスを使用してすることができます。

ファイルアドレス:*文が正しくDBへのコミットに失敗した何らかの理由*: https://www.ibm.com/developerworks/library/j-loggable/index.html

Connection connection = DriverManager.getConnection(url,dbUserName,dbPassword); 

StringBuffer stringBuffer = new StringBuffer("SELECT * FROM TABLEx"); 
LoggableStatement statement = new LoggableStatement(connection,stringBuffer.toString()); 

try { 
    statement.execute(); 
} catch (Exception ex) { 
    // write QueryString to a file! 
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("fileName", true), "cp1256")); 
    out.write(statement.getQueryString()); 
    out.close(); 
} finally { 
    if (statement != null && !statement.isClosed()) { 
     statement.close(); 
    } 
} 
関連する問題