Stored Procedure - Mysql

Senhores,

Estou com a seguinte dúvida, em minha aplicação tenho a seguinte chamada para uma Stored Procedure:

public ResultSet pesquisar_horarios_terapias() throws SQLException { this.dados = null; ConectaBd cadastrando = new ConectaBd(); System.out.println(this.getTabela()); Connection agendaservsocial = cadastrando.conecta(); CallableStatement cs = (CallableStatement) agendaservsocial.prepareCall("{call procurar_horario_servico_social(?,?,?)}"); cs.setString(1,this.getTabela()); cs.setString(2,this.getDatainicial()); cs.setInt(3,this.getCodigo()); cs.execute(); this.dados = cs.getResultSet(); return this.dados; }

O que ocorre é o seguinte, esta stored é chamada 50 vezes seguidas por vários usários, e quando isso acontece o meu banco de dados para de responder pois ele chega ao máximo de conexões que pode receber, se não me engano 300.
Tentei fazer o seguinte, após a linha:

Tentei colocar um :

Para fechar a conexao, no entanto, quando faço isso recebo o seguinte erro quando chamo a procedure:
[list]31/05/2010 14:00:39 inicial.Principal menuagendaaquatica2ActionPerformed
SEVERE: null
java.sql.SQLException: Operation not allowed after ResultSet closed
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:768)
at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:7008)
at Agenda.ServSocial.AgendaSocial.PreencherTabela(AgendaSocial.java:580)[/list]
Então gostaria de saber como fechar essa conexão assim que usar a procedure, para que ela não fique ocupando um slot no BD.
Grato

Tiago Dantas

Isso acontece porque voce fecha a sua “cs” na hora errada. Voce fecha o close no CallableStatement resulta em um close no ResultSet que voce esta tentando usar fora da função pesquisar_horarios_terapias() .
Uma maneira de resolver isso é fechar o resultSet (cs) depois de usar o retorno da função pesquisar_horarios_terapias().]

Ex

ResultSet teste = pesquisar_horarios_terapias();
//Uso do resultSet teste

//Liberacao de recursos
teste.close();

Talvez não seja a melhor das soluções, mas para melhorar voce precisara refazer algumas coisas relacionadas à conexao com o banco (estrutural)