Senhores,
Estou com o seguinte problema.
Quando meu sistema executa diversas pesquisas no BD ele para de criar a conexão e da um erro, na verdade o que percebi é que quando são 100 conexões ele para de conectar.
Então pelo que entendi tenho de fechar estas conexões, já tentei fazer algo aqui mas não estou conseguindo, então vou enviar os meus códigos, para ver se alguem me ajuda.
Classe para conexão com o banco:
package ConexaoBd;
import java.net.URL;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
//import com.mysql.jdbc.Connection;
/**
*
* @author Tiago
*/
public class ConectaBd {
java.sql.Connection conectado = null;
public java.sql.Connection conecta(){
try {
String driverName = "org.gjt.mm.mysql.Driver";
Class.forName(driverName);
// Criando a conexão com o Banco de Dados
String servidor = "192.168.0.150";
String nomeDoBanco = "abdim";
String url = "jdbc:mysql://" + servidor + "/" + nomeDoBanco; // a JDBC url
String login = "adm";
String senha = "senhasenha";
this.conectado = DriverManager.getConnection(url, login, senha);
} catch (ClassNotFoundException e)
{
//Driver não encontrado
System.out.println("O driver expecificado não foi encontrado.");
} catch (SQLException e)
{
URL url = getClass().getClassLoader().getResource("icones/bd.png");
Icon bd = new ImageIcon(url);
JOptionPane.showMessageDialog(null,"Não foi possível conectar ao Banco de Dados, por favor contacte o administrador do sistema.", "Erro na Base de Dados", JOptionPane.YES_OPTION,bd);
}
return this.conectado;
}
public synchronized void desconectar() {
if (conectado != null) {
try {
conectado.close();
} catch (SQLException ex) {
// Isso nao é um tratamento muito bom, melhor seria jogar a Exception...
ex.printStackTrace();
}
conectado = null;
}
}
}
Classe que executa as stored procedures:
package Agenda.ServSocial;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;
import ConexaoBd.ConectaBd;
import com.mysql.jdbc.CallableStatement;
/**
*
* @author Tiago
*/
public class ProcurarAgendamentoServSocial {
private ResultSet dados;
private String datainicial;
private String datafinal;
private int codigo;
private String horario;
private String tabela;
ConectaBd cadastrando = new ConectaBd();
Connection agendaservsocial = cadastrando.conecta();
public String getTabela() {
return tabela;
}
public void setTabela(String tabela) {
this.tabela = tabela;
}
public String getHorario() {
return horario;
}
public int getCodigo(){
return codigo;
}
public String getDatafinal() {
return datafinal;
}
public String getDatainicial() {
return datainicial;
}
public void setHorario(String horario) {
this.horario = horario;
}
public void setCodigo(int codigo){
this.codigo = codigo;
}
public void setDatafinal(String datafinal) {
this.datafinal = datafinal;
}
public void setDatainicial(String datainicial) {
this.datainicial = datainicial;
}
public ResultSet pesquisar_agenda_servsocial() throws SQLException{
this.dados = null;
CallableStatement cs = (CallableStatement) agendaservsocial.prepareCall("{call procurar_todos_servico_social(?)}");
cs.setString(1,this.getDatainicial());
cs.execute();
this.dados = cs.getResultSet();
return this.dados;
}
public ResultSet pesquisar_horarios_terapias() throws SQLException
{
this.dados = null;
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;
}
public void desconectar()
{
cadastrando.desconectar();
}
}
Segue abaixo um prequeno trecho do programa que instancia a classe acima:
public void PreencherTabela() throws SQLException, ParseException{
ProcurarAgendamentoServSocial consultabanco = new ProcurarAgendamentoServSocial();
ArrumaData anotras = new ArrumaData();
VerificarData listardatas = new VerificarData();
if (!txtdatainicial.getText().equals(" / / ") && !txtdatainicial.getText().equals("") && !txtdatafinal.getText().equals(" / / ") && !txtdatafinal.getText().equals(""))
{
consultabanco.setDatainicial(anotras.AnoFrente(txtdatainicial.getText()));
}
else
{
if (!txtdatainicial.getText().equals(" / / ") && !txtdatainicial.getText().equals("") && (txtdatafinal.getText().equals(" / / ") || txtdatafinal.getText().equals("")) )
{
consultabanco.setDatainicial(anotras.AnoFrente(txtdatainicial.getText()));
}
else
{
consultabanco.setDatainicial(null);
}
}
this.retornobanco = consultabanco.pesquisar_agenda_servsocial();
Vector vetcoluna = new Vector();
vetcoluna.add(tabelaagenda.getColumnName(0).toString());
vetcoluna.add(tabelaagenda.getColumnName(1).toString());
vetcoluna.add(tabelaagenda.getColumnName(2).toString());
vetcoluna.add(tabelaagenda.getColumnName(3).toString());
vetcoluna.add(tabelaagenda.getColumnName(4).toString());
vetcoluna.add(tabelaagenda.getColumnName(5).toString());
vetcoluna.add(tabelaagenda.getColumnName(6).toString());
vetcoluna.add(tabelaagenda.getColumnName(7).toString());
vetcoluna.add(tabelaagenda.getColumnName(8).toString());
vetcoluna.add(tabelaagenda.getColumnName(9).toString());
vetcoluna.add(tabelaagenda.getColumnName(10).toString());
Vector vetlinhas = new Vector();
String horarios = "";
while (this.retornobanco.next())
{
Vector vetlinha = new Vector();
vetlinha.add(txtdatainicial.getText());
PesquisaPaciente dadospaciente = new PesquisaPaciente();
dadospaciente.setCodigo(retornobanco.getInt("pacientes_pac_cod"));
consultabanco.setCodigo(retornobanco.getInt("pacientes_pac_cod"));
ResultSet nome = dadospaciente.pesquisar_paciente_agendamento();
nome.next();
vetlinha.add(retornobanco.getInt("pacientes_pac_cod"));
vetlinha.add(nome.getString("pac_nome"));
//horarios aquática
consultabanco.setTabela("aqua");
horarios = "";
ResultSet hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_aqua_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios clinica
consultabanco.setTabela("clinica");
hora = consultabanco.pesquisar_horarios_terapias();
horarios = "";
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_clinica_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios fono
horarios = "";
consultabanco.setTabela("fono");
hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_fono_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios motora
horarios = "";
consultabanco.setTabela("motora");
hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_mot_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios nutrição
horarios = "";
consultabanco.setTabela("nutri");
hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_nutri_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios pedagogia
horarios = "";
consultabanco.setTabela("pedago");
hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_pedago_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios respiratória
horarios = "";
consultabanco.setTabela("resp");
hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_resp_hora").substring(0,5);
}
vetlinha.add(horarios);
//horarios to
horarios = "";
consultabanco.setTabela("to");
hora = consultabanco.pesquisar_horarios_terapias();
while(hora.next())
{
horarios = horarios+" "+hora.getString("age_to_hora").substring(0,5);
}
vetlinha.add(horarios);
vetlinhas.add(vetlinha);
}
if (!vetlinhas.isEmpty())
{
DefaultTableModel modelo = new DefaultTableModel(vetlinhas,vetcoluna) {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
tabelaagenda.setModel(modelo);
}
else
{
tabelaagenda.setModel(new DefaultTableModel(vetlinhas,vetcoluna));
JOptionPane.showMessageDialog(null ,"Não existe nenhum paciente agendado nesta data.",
"Nenhum dado encontrado.",JOptionPane.YES_OPTION, erro);
}
arrumatabela();
}
Gostaria de saber como fazer para fechar estas conexões, pois no Mysql aparecem 25 conexões com o banco quando executo o método PreencherTabela.
Já tentei utilizar o método desconectar de várias formas e nada, alguem pode me dar uma luz.
Grato
Tiago Dantas