其實也面對了不少事情,
為了怕以後忘記,還是寫起來吧,
未來帶開發團隊,一定要先要求 connection 關閉的標準寫好,
不然一堆 connection 卡在那裡佔用資源,server會受不了阿
在jdk的說明中有提到,幾個定義:
1.close() 的定義是"Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released",依照說明可以知道,就是為了立刻釋放connection,避免佔用資料庫和 JDBC 的資源,可免於等 GC 機制啟動被動式的釋放資源
2.將connection置為null,就會變成這個 connection 還會持續佔用資源,等GC機制進行釋放,但是我們都知道GC的機制不是即時的,而且回收常會有不穩定和不確定性,因此這樣處理,還是會一直佔用資料庫和 JDBC 的資源
connection 關閉範例寫法
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
con = getConnection();//getConnection is your method
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
//...........
}
catch (SQLException ex) {
//錯誤處理
}
finally{
try {
if(ps!=null)
ps.close();
}
catch (SQLException ex) {
//錯誤處理
}
try{
if(con!=null)
con.close();
}
catch (SQLException ex) {
//錯誤處理
}
}
con = getConnection();//getConnection is your method
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
//...........
}
catch (SQLException ex) {
//錯誤處理
}
finally{
try {
if(ps!=null)
ps.close();
}
catch (SQLException ex) {
//錯誤處理
}
try{
if(con!=null)
con.close();
}
catch (SQLException ex) {
//錯誤處理
}
}
沒有留言:
張貼留言