我一直在學習如何在Java中使用Oracle使用Oracle JDBC,我試圖進入try/catch和池清理的思維模式。在Java中處理SQL連接池清理和錯誤處理的正確方法是什麼?
我想知道如果下面的代碼是完全清理所有東西的正確方法,或者你在我的代碼中發現了需要我錯過的東西的漏洞。爲了記錄,我打算使用InnoDB及其行鎖定機制,這就是爲什麼我關閉自動提交。
try
{
connection = getConnection(); // obtains Connection from a pool
connection.setAutoCommit(false);
// do mysql stuff here
}
catch(SQLException e)
{
if(connection != null)
{
try
{
connection.rollback(); // undo any changes
}
catch (SQLException e1)
{
this.trace(ExtensionLogLevel.ERROR, e1.getMessage());
}
}
}
finally
{
if(connection != null)
{
try
{
if(!connection.isClosed())
{
connection.close(); // free up Connection so others using the connection pool can make use of this object
}
}
catch (SQLException e)
{
this.trace(ExtensionLogLevel.ERROR, e.getMessage());
}
}
}
getConnection()
從池中返回一個Connection對象,並connection.close()
關閉它釋放回池中(所以我一直在說,還是新來這個如此道歉,如果我說廢話)。任何這方面的幫助將不勝感激!
謝謝!
行爲良好的連接池實現將在您調用Connection.close()時爲您執行所有必需的清理。 – 2013-04-10 14:47:09