Threads travando banco de dados

5 respostas
postgresqljava
jorgereidinaldo
final Timer t = new Timer();
    t.schedule(new TimerTask() {
        @Override
        public void run() {
        	try {
				listaTable_Agendamento();
				
				
			} catch (ClassNotFoundException | SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
        }

    }, 10000, 10000); // não sei o funcionamento do temporizadoir
}

Tenho esta thread que funciona perfeitamente estou usando JDBC e em alguns momentos esta informando que o banco esta com muitos usuariso conectados alguem sabe do que se trata

5 Respostas

javaflex

Em que momento está fechando a conexão com o banco? Deve fechar assim que terminar a requisição.

jorgereidinaldo
public ArrayList<ViewAgendamento> getAgendamento() {
	
	  ArrayList<ViewAgendamento> minhalista = new ArrayList<ViewAgendamento>();

String sql = “select * FROM sc_clinica.view_agendamento ORDER BY horario_atendimento asc”;

PreparedStatement stmt;
	
		try {
			stmt = this.conexao.prepareStatement(sql);
		
 
  // stmt.setString(1, referencia+"%");
    ResultSet rs = stmt.executeQuery();  

   
    
    while (rs.next()){  
    	//classes envolvidas
    	ViewAgendamento es=new ViewAgendamento();
  ViewAgendamentoId ag=new ViewAgendamentoId();
    	
    	//estoque.setCodigoFabricante(codigoFabricante);
    	ag.setClaro(rs.getString("claro"));
    	ag.setTim(rs.getString("tim"));
    	ag.setConvenio(rs.getString("convenio"));
    	ag.setData(rs.getDate("data"));
    	ag.setCpf(rs.getString("cpf"));
    	ag.setDataUsuario(rs.getDate("data_usuario"));
    	ag.setEnderecoCliente(rs.getString("endereco_cliente"));
    	ag.setFkCidade(rs.getInt("fk_cidade"));
    	ag.setFkConvenio(rs.getInt("fk_convenio"));
    	ag.setFkPaciente(rs.getInt("fk_paciente"));
    	ag.setFkProfissional(rs.getInt("fk_profissional"));
    	ag.setHorarioAtendimento(rs.getString("horario_atendimento"));
    	ag.setHorario(rs.getInt("horario"));
    	ag.setStatusAtendimento(rs.getString("status_atendimento"));
    	ag.setStatus(rs.getInt("status"));
        ag.setNomeCliente(rs.getString("nome_cliente"));
        ag.setRgCliente(rs.getString("rg_cliente"));
        ag.setNomeProfissional(rs.getString("nome_profissional"));
        ag.setIdCliente(rs.getInt("id_cliente"));
    	ag.setIdFilaEspera(rs.getInt("id_fila_espera"));
    ag.setIdProcedimento(rs.getInt("id_procedimento"));
    ag.setProcedimento(rs.getString("procedimento"));
    	
    	es.setId(ag);
    	
    	
    	
    	
    	
		minhalista.add(es);

     
   
    }
 rs.close();  
 stmt.close();  
    } catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		
			 //System.out.println(s_aux.getPortador());
		
        }  
	
	return minhalista;

}

}

javaflex

O código que postou nao mostra a conexao sendo fechada. Só fechou rs e stmt.

javaflex

Exemplo: https://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/#exerccios-connectionfactory

j-menezes

O numero de usuarios pode ser configurado pelo banco, no entanto existe o chamado “pool de conexões”, que fica mais rapido que ficar conectando e desconectando toda hora com o banco.

A questão de entrar e fechar nem sempre resolve o problema, principalmente se a demanda simultânea for muito grande.

Criado 14 de março de 2020
Ultima resposta 15 de mar. de 2020
Respostas 5
Participantes 3