Erro: Too many connections

Olá galera, estou criando uma apllicação aqui porem, as vezes, quando tento conectar ao BD ele dá esse erro too many connections, ja pesquisei para saber sobre ele, e descobri que ele só ocorre quando um número limites de usuários do BD foi atingido. Aí é que mora o problema pq só eu estou fazendo acesso a ele mais ninguem da rede faz isso, será que é alguma resultset, ou conexao que eu tenho que fechar? valew galera!

Sim, provavelmente suas conexões não estão sendo fechadas. Sempre feche tudo para liberar os recursos do banco.

Bom dia,
Com o davidbuzatto dice, tem que fechar sempre…

te aconselho a fazer algo tipo:

ResultSet  rs = null;
		try{
			rs = ...
		}catch(Exception e){
			   throw e;
		}finally{
			if ( rs != null ){
				if ( rs.getStatement() != null ){
					rs.getStatement().close();
				}
				rs.close();
			}
		}

Abraços

opa galera eu entendi realmente o problema. agora eu queria saber como posso aplicar essa solução, eu ja estava tentando porem sem sucesso, a minha classe de percistencia no BD é essa, tentei fazer como o jwalker explicou mas n está funcionando.

package pacoteDAO;

import java.sql.*;

public class conexaoDAO {

private static Connection con = null;
private static Statement st = null;

    //Cria a conexao com o banco de dados
    private static void conexao(){
        try{
            Class.forName("org.gjt.mm.mysql.Driver");
           con = DriverManager.getConnection("jdbc:mysql://localhost:3306/clinica","root","root");
            st = con.createStatement();
        }
        catch(Exception ex)
        {}
    }//fim do método de conexao

public static ResultSet pesquisa(String campo, String tabela, String ordem){
        ResultSet rs=null;
        try{
            conexao();
            rs = st.executeQuery("select "+campo+" from "+tabela+" "+ordem);
            return(rs);
        }
        catch(Exception ex){
            return(null);
        }
    }//Fim do método pesquisa

public static ResultSet pesquisaGeral(String campo, String tabela,String parametro ,String ordem)
    {
        try{
            conexao();
            ResultSet rs = st.executeQuery("select "+campo+" from "+tabela+" where "+parametro+" "+ordem);
            return(rs);
        }
        catch(Exception ex){
            return(null);
        }
    }//Fim do método pesquisaGeral

public static int atualizaDado(String tabela, String campo, String parametro){
         try{
            conexao();
            int i = st.executeUpdate("update "+tabela+" set "+campo+" where "+parametro);
            return(i);
        }
        catch(Exception ex)
        {
            return(0);
        }
    }
}

fala agalera! consegui resolver, vou postar a solução.

public static ResultSet pesquisa(String campo, String tabela, String ordem) throws Exception{ ResultSet rs=null; try{ conexao(); rs = st.executeQuery("select "+campo+" from "+tabela+" "+ordem); return(rs); } catch(SQLException ex){ return(null); }finally{ if(rs != null){ if(rs.getStatement() != null){ rs.getStatement().close(); } rs.close(); } } }//Fim do método pesquisa

o problema quando eu ia fazer oque foi proposto pelo jwalker era que dava uma mensagem unreported Exception … e no fim falava algo sobre o throw (que jwalker ja tinha mostrado que precisava ser usado), porem usando do jeito que ele me mostrou n funfou aí pesquisando eu achei essa solução.
Legal o problema foi resolvido, mas alguém poderia me explicar pq usar o throws alí e não dentro do catch!? valew!

huahuahua tapa aqui descobre ali!!! galera consegui terminar porem quando executo o projeto da o seguinte erro: java.sql.SQLException: Operation not allowed after ResultSet closed bom isso ocorre pq eu fechei o resultset antes dele ser executado n é mesmo? como posso contornar isso?