在Java中调用存储过程
我正在使用用于PostgreSQL的JDBC驱动程序,我想调用存储过程 假设我有一个调用存储过程的方法,如下所示:在Java中调用存储过程,java,postgresql,stored-procedures,jdbc,connection-pooling,Java,Postgresql,Stored Procedures,Jdbc,Connection Pooling,我正在使用用于PostgreSQL的JDBC驱动程序,我想调用存储过程 假设我有一个调用存储过程的方法,如下所示: public void callProcedure(int someValue) { Connection con = null; try { con = connectionPool.getConnection(); CallableStatement st = con.prepareCall("{ call some_p
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.)如果我在类的构造函数中创建连接,并在构造函数中准备调用,那么(性能方面)会更好吗
可赎回声明
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.)总是在执行语句后关闭连接有意义吗?还是让它开着?据我所知,关闭它会将连接返回到连接池,以便其他人可以使用它。对吗
我尝试这样做已经有一段时间了,但我始终无法从Java连接到我的SQL Server数据库。我有一个存储过程,我想将表中的五个字段加载到JTable中