如果我通過在連接對象上調用close()來顯式關閉連接,我已經將連接對象設置爲null。連接對象上的close()和null有什麼區別? 如果我關閉連接,仍然在連接池中維護連接對象?例如對於例如 connection.close()和connection之間的區別= null
Connection dbConnection=null;
PreparedStatement preparedStatement = null;
ResultSet rs;
try {
Connection dbConnection= DriverManager.getConnection("jdbc:hsqldb:file:test5","sa", "");
...........
...........
dbConnection.close();
dbConnection=null;
} catch (Exception e) {
LOGGER.error("Exception Occured while fetching All record:Item details start method "
+ e.getMessage());
} finally {
try
{
if (rs!=null)
{
rs.close();
rs=null;
}
}
catch(SQLException e)
{
LOGGER.error(RESULTSETCLOSEEXCEPTION
+ e.getMessage());
}
try {
if (preparedStatement != null) {
preparedStatement.close();
preparedStatement=null;
}
} catch (SQLException e) {
LOGGER.error(STATEMENTCLOSEEXCEPTION
+ e.getMessage());
}
try {
if (dbConnection != null) {
dbConnection.close();
dbConnection=null;
}
} catch (SQLException e) {
LOGGER.error(CONNECTIONCLOSEEXCEPTION
+ e.getMessage());
}
}
上述代碼是關閉連接,準備語句和結果集的正確方法嗎?
當您使用連接池時,您獲得的連接是代理或包裝。調用'close()'信號給池以使連接返回到池;它不會關閉物理連接,但代理的行爲就像連接已關閉一樣。 –