2014-02-27 30 views
0

在程序中,連接器,preparedstatement和resultset被用作實例變量,並在每次在下面給出的單獨方法中使用後關閉,然後通過創建新連接器對象進行重用,分配它爲con進行後續調用。這樣做是否安全,還是在方法本地創建單獨的連接器對象並在finally塊中關閉它會更好?用作實例變量的結果集

private void closeObjects() throws Exception{ 
if(rs!=null){ 
rs.close(); 
rs=null; 
} 
if(preparedstmt!=null){ 
preparedstmt.close(); 
preparedstmt=null; 
} 
if(con!=null){ 
con.close(); 
con=null; 
} 
} 

我確實是面臨着一個問題,即用實例變量,當我跑程序的第一次,它沒有給人一種錯誤Result set not open但開始起就在第二次運行後的工作。

[道歉不顯示整個代碼]

+0

取決於。該方法可以同時調用嗎?一般來說,我沒有理由將它們作爲實例變量而不是本地變量! –

+0

使用方法來創建連接對象是有益的。特別是如果你想使用單例可以提高性能 –

回答

0

我更喜歡有JDBC實例在執行SQL操作方法的局部變量。這種方法使得它們的生命週期變得清晰,如果你忘記在某處調用closeObjects(),則不必擔心。如果你想避免代碼重複,然後創建方法,接受他們作爲參數,並從finally塊調用它。

private void closeObjects(Connection con, ResultSet rs, Statement statement) throws Exception { 
    if (rs != null) { 
     rs.close(); 
     rs=null; 
    } 

    if (statement != null) { 
     statement.close(); 
     statement=null; 
    } 

    if (con != null) { 
     con.close(); 
     con=null; 
    } 
}