Conexao com o banco de dados postgres

5 respostas
java
L

Ola eu tenho um problema na minha conexão com o banco de dados, eu criei uma classe responsável pela conexão ele ate conecta mais em algum momento indeterminado ele desconecta sozinho e essa e a mensagem do erro " org.pstgresql.util.PSQLException: This connection has been closed".

**************************** Segui o código da classe de conexão com o postgres: ****************************

package utilitarios;

import java.sql.*;
import javax.swing.JOptionPane;

/**
*

  • @author Lucas
    */
    public class ConectaBanco {

    public Statement stm;// prepara e realiza pesquisa no banco de dados
    
    public ResultSet rs;// armazena resultados de pesquisa
    
    private final String driver = org.postgresql.Driver;// indetificador do servico de banco de dado
    
    private final String caminho = jdbc:postgresql://localhost:5432/sistemamarinhabrasil”;// endereço local do banco de dados
    
    private final String usuario = postgres;
    
    private final String senha = 56250914;
    
    public Connection conn;//realiza a conexao com o banco de dados
    

    public void conexao(){ // metodo responsavel pela conexao

    System.setProperty("jdbc.Drivers", driver);
     try {
         conn = DriverManager.getConnection(caminho, usuario, senha);
        // JOptionPane.showMessageDialog(null, "conectado com sucesso!");
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro de conexão! contacte o administrador do sistema. \n Erro " + ex.getMessage());
     }
    

    }

    public void executaSQL(String sql) throws SQLException{

    try {
         stm = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
         rs = stm.executeQuery(sql);
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro no parametro ExecutaSQL!\n ERRO: " + ex.getMessage());
     }
    

    }

    public void desconecta() {

    try {
         conn.close();
         //JOptionPane.showMessageDialog(null, "Deseja sair?");
     } catch (SQLException ex) {
         JOptionPane.showMessageDialog(null, "Erro ao fechar a conexão! contacte o administrador do sistema. \n Erro " + ex.getMessage());
         
     }
    

    }
    }

Se alguem puder me ajudar eu estou aprendendo a programar ainda, conto com a ajuda de vocês… :wink:

5 Respostas

igomes

aonde vc chama esse método desconecta ? ou está ai de enfeite só ?
Lembrando
if (rs != null)
rs.close();
if(conn != null)
conn.close();

e claro isso tudo no bloco finally

L

vou mostrar um exemplo que eu tenho…

ConectaBanco conecta = new ConectaBanco();

if(!jComboBoxNomePaciente.getSelectedItem().equals("")){

try {

conecta.conexao();

conecta.executaSQL(select * from dependentes where nome_dependentes = '” + jComboBoxNomePaciente.getSelectedItem() + “’”);

if(conecta.rs.first()){
jTextFieldParentesco.setText(conecta.rs.getString("parentesco_dependentes"));
                jTextFieldTipo.setText(conecta.rs.getString("tipos_dependentes"));
                
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro ao preencher ComboBox com dados do dependente!" + ex);
        }
        conecta.desconecta();
    }
    
}
L

mas como assim bloco finally?

igomes

Vamos lá, alguns dos problemas do seu código, evita ao máximo ficar concatenando Strings, hoje já existe uma interface que vc consegue abstrair isso PreparedStatement
O bloco finally ele é executado independente do resultado do seu try(tenta), catch(pega).

L

mas o que devo fazer?
devo usar só a clase de conexão com o banco?

Criado 8 de março de 2016
Ultima resposta 9 de mar. de 2016
Respostas 5
Participantes 2