0
我正在使用PostgreSQL的JDBC驅動程序,我想調用存儲過程。在Java中調用存儲過程
假設我有如下調用存儲過程的方法:
public void callProcedure(int someValue) {
Connection con = null;
try {
con = connectionPool.getConnection();
CallableStatement st = con.prepareCall("{ call some_procedure(?) }");
st.setInt(1, someValue);
st.execute();
st.close();
}
catch (SQLException e) {
System.out.println(e.getMessage());
}
finally {
if (con != null) {
try { con.close(); } // assure connection "goes" back to the pool
catch (SQLException e) { }
}
}
}
現在讓我們假設這種方法callProcedure
也可能會被調用次數萬元。我的問題是:
(1)它會更好(性能明智),如果我創造我的類的構造函數,並在構造函數中的連接prepare_the_Call
,所以是這樣的:
的CallableStatement ST;
public Constructor() {
Connection con = connectionPool.getConnection();
st = con.prepareCall("{call some_procedure(?)}");
}
,然後裏面的方法去做:
public void callProcedure(int someValue) {
try {
st.setInt(1, someValue);
st.execute();
st.close();
}
catch (SQLException e) {
System.out.println(e.getMessage());
}
finally {
if (con != null) {
try { con.close(); } // assure connection "goes" back to the pool
catch (SQLException e) { }
}
}
}
(2)是否有意義close
連接始終執行語句後?還是應該讓它開放?根據我的理解,關閉它會將連接返回到連接池,以便其他人可以使用它。那是對的嗎?
我一直在試圖做一段時間,我從來沒有能夠從Java到我的SQL Server數據庫的連接。我有一個存儲過程,我想從表中加載五個字段到一個JTable –