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!
Erro: Too many connections
5 Respostas
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?