Erro ao conectar ao banco de dados PostgreSql [Resolvido graças a ajuda dos colaboradores do GUJ]

13 respostas
N

Opa, sou novo na áre e estou precisando de uma ajuda em conexão com o bando de dados, estou usando o código de um colaborador do fórum porém o mesmo não está conectando ao banco.

package Estudo;

import java.sql.*;

public class ConexaoBanco {   
    String url="jdbc:postgresql://127.0.0.1:5432/seila";   
    String driver="org.postgresql.Driver";   
    String usuario="neocortex";   
    String senha="********";   
         
         
public Connection getConnection() throws SQLException {   
        try { 
            System.out.println(url);
            Class.forName(driver);   
            System.out.println("Conectando ao banco...");   
            return DriverManager.getConnection(url,usuario,senha);   
        } catch (Exception e ) {   
            System.out.println(e.getMessage());   
        }   
    }   
       
}

Todos os dados de conexão teóriacamente estão corretos porém ele me vêm com o seguinte erro:

Exception in thread main java.sql.SQLException: org.postgresql.Driver

at Estudo.ConexaoBanco.getConnection(ConexaoBanco.java:21)

at Estudo.Principal.main(Principal.java:43)

Java Result: 1

O banco de dados que utilizo está na versão 8.3…Chamo a função criando um objeto assim:

package Estudo;

import java.sql.SQLException;
import java.text.ParseException;

/**
 *
 * @author Celso José Pereira
 */
public class Principal {

  
    @SuppressWarnings("static-access")
   public static void main(String[] args) throws ParseException, SQLException {
   /*-------------------------------------------------------------------*/
 //    System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++");
 //    System.out.println("Garota de Ipanema Extendida");
 //    System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
     /*-------------------------------------------------------------------*/
//     MenininhaExtendida mnnEx = new MenininhaExtendida();
//     mnnEx.celso=666666;
//     mnnEx.showMessage("detona a menina");
     /*-------------------------------------------------------------------*/
 //    System.out.println("\n+++++++++++++++++++++++++++++++++++++++++++++++++++");
 //    System.out.println("Normal");
 //    System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
     /*-------------------------------------------------------------------*/
 //    SegundaApp sapp = new SegundaApp(); 
 //    sapp.celso=20;
 //    sapp.showMessage("detona porra nenhuma");
     
     /*-------------------------------------------------------------------*/
 //    System.out.println("\n+++++++++++++++++++++++++++++++++++++++++++++++++++");
 //    System.out.println("Conexão com o banco de dados");
 //    System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++\n");
  //  /* -------------------------------------------------------------------*/
     ConexaoBanco conn = new ConexaoBanco();
     conn.getConnection();
     
        
        }

}

Desculpem atrapalhar más sou iniciante e bati muito a cabeça tentando fazer esse código funcionar…

Um grande abraço…

13 Respostas

J

Rapaz… pode ser uma pergunta besta… mas, a senha do teu banco é essa ********?

N

joca_java:
Rapaz… pode ser uma pergunta besta… mas, a senha do teu banco é essa ********?

Isso não é de forma alguma uma pergunta besta meu jovem, você está tentando ajudar debugando o código agradeço por isso!!!

Não é essa não meu amigo só troquei por asterísticos pois a senha original é comum pra mim e na hora veio a calhar para não deixar todos sabendo dela. :smiley:

R

Caros bom dia.
Comecei a usar o postgree agora, tenho pouca experiencia nele.
Vc adicionou o driver do banco ?
verifique e retorne
abraços, roger2007 :smiley:

N

roger2007:
Caros bom dia.
Comecei a usar o postgree agora, tenho pouca experiencia nele.
Vc adicionou o driver do banco ?
verifique e retorne
abraços, roger2007 :D

Boa Tarde!

Adicionei ao pacote sim, o driver que teoricamente funciona é esse: postgresql-8.3-603.jdbc4.jar. Porém tanto com ele como sem o erro é o mesmo!

F

Eu estou a utilizar a vesrão 8.2 do PostgreSQL, e este está funcionando perfeitamente.

Assim está meu método para conectar ao banco:

public void conecta(){ try{ String fonte = "jdbc:postgresql://localhost:5432/biblioteca03"; String usuario = "postgresFabricio"; String senha = "123"; Class.forName("org.postgresql.Driver"); con = DriverManager.getConnection(fonte, usuario, senha); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(null, "Erro em ClassNotFoundException: " + e.getMessage()); } catch(SQLException e){ JOptionPane.showMessageDialog(null, "Erro em SQLException: " + e.getMessage()); } catch(NoClassDefFoundError e){ JOptionPane.showMessageDialog(null, "Erro em NoClassDefFoundError: " + e.getMessage()); } }

R

boa tarde.
Voce consegue visualizar a url ?

System.out.println(url);

com esse comando que está na sua conexão vc deveria ver a url.
Se vc não consegue ver é pq as informações de senha, usuario e url não estão chegando no getconnection.
Vc está usando um usuário diferente de postgree ?
Vc consegue criar tabelas no banco com esse usuário ?
pf verifique, como disse estou usando o post a pouco tempo, dessa forma tenho pouca experiencia nele.
um forte abraço roger :smiley:

D

A descrição do erro será mais completa e poderemos tentar de ajudar melhor.

Mas cabe algumas sugestões, eu raramente me conecto ao loopback, você está usando windows ou linux nesse servidor postgresql? com o pgadmin você consegue se conectar?
Faça um teste com o squirrel sql (http://squirrel-sql.sourceforge.net/), é um bom cliente sql.
abra um console e verifique com netstat -an para ver ser o postgresql está escutando na porta 5432.
Se os arquivos, postgresql.conf, pg_hda.conf estiverem corretos para a camada tcp, então ainda restará verificar o seu firewall.

fw

N

roger2007:
boa tarde.
Voce consegue visualizar a url ?

System.out.println(url);

com esse comando que está na sua conexão vc deveria ver a url.
Se vc não consegue ver é pq as informações de senha, usuario e url não estão chegando no getconnection.
Vc está usando um usuário diferente de postgree ?
Vc consegue criar tabelas no banco com esse usuário ?
pf verifique, como disse estou usando o post a pouco tempo, dessa forma tenho pouca experiencia nele.
um forte abraço roger :D

Grande Roger tudo bem?

Fiz o teste e consigo visualizar a variável sim sem maiores problemas…

Obrigado pela ajuda e um grande abraço!!!

N

FabricioPJ:
Eu estou a utilizar a vesrão 8.2 do PostgreSQL, e este está funcionando perfeitamente.

Assim está meu método para conectar ao banco:

public void conecta(){ try{ String fonte = "jdbc:postgresql://localhost:5432/biblioteca03"; String usuario = "postgresFabricio"; String senha = "123"; Class.forName("org.postgresql.Driver"); con = DriverManager.getConnection(fonte, usuario, senha); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(null, "Erro em ClassNotFoundException: " + e.getMessage()); } catch(SQLException e){ JOptionPane.showMessageDialog(null, "Erro em SQLException: " + e.getMessage()); } catch(NoClassDefFoundError e){ JOptionPane.showMessageDialog(null, "Erro em NoClassDefFoundError: " + e.getMessage()); } }

Primeiramente obrigado!!

Adaptei seu código para minhas necessidades e o mesmo deu o que parece ser um erro de driver “Erro em ClassNotFoundException:org.postgresql.Driver”.

Um Grande abraço!!!

N
Dieval Guizelini:
neoCortex:
public Connection getConnection() throws SQLException { try { System.out.println(url); Class.forName(driver); System.out.println("Conectando ao banco..."); return DriverManager.getConnection(url,usuario,senha); } catch (Exception e ) { // System.out.println(e.getMessage()); e.printStackTrace(); } } } [/code]

A descrição do erro será mais completa e poderemos tentar de ajudar melhor.

Mas cabe algumas sugestões, eu raramente me conecto ao loopback, você está usando windows ou linux nesse servidor postgresql? com o pgadmin você consegue se conectar?
Faça um teste com o squirrel sql (http://squirrel-sql.sourceforge.net/), é um bom cliente sql.
abra um console e verifique com netstat -an para ver ser o postgresql está escutando na porta 5432.
Se os arquivos, postgresql.conf, pg_hda.conf estiverem corretos para a camada tcp, então ainda restará verificar o seu firewall.

fw

Tudo bem Dieval?

Vamos as respostas dos testes:

O Loopback funciona perfeitamente quanto a isso não parece ter problemas!!!
Utilizo o Windows Xp Pro Sp2 comp 2702!!
Sim senhor o PgAdmin conecta perfeitamente assim como minha aplicações php!
Ótimo cliente por sinal e também conecta sem maiores problemas!!!
O post... está na 5432 em tcp também não parece ter problemas!!
No firewall a porta está aberta más isso é indiferente pois é uma conexão de loopback e não passa por interface nenhuma!!!!
Quanto aos arquivos postgresql.conf, pg_hda.conf me parece estar tudo ok não tenho tido maiores problemas de conexão.

Segue o código de erro para vossa apreciação:


init:
deps-jar:
compile-single:
run-single:
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at Estudo.ConexaoBanco.conecta(ConexaoBanco.java:24)
at Estudo.Principal.main(Principal.java:47)
CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)

Esse é o código alterado:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Estudo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author Celso José Pereira
 */
public class ConexaoBanco {

    public void conecta(){
        try{
            String fonte = "jdbc:postgresql://localhost:5432/seila";
            String usuario = "celsojp";
            String senha = "Minha senha não é essa!!!!oO";
            Class.forName("org.postgresql.Driver");
            Connection con = DriverManager.getConnection(fonte,usuario,senha);
        }
        catch(ClassNotFoundException e){
            JOptionPane.showMessageDialog(null, "Erro em ClassNotFoundException: " + e.getMessage());
        e.printStackTrace(); 
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null, "Erro em SQLException: " + e.getMessage());
        }
        catch(NoClassDefFoundError e){
            JOptionPane.showMessageDialog(null, "Erro em NoClassDefFoundError: " + e.getMessage());
        }
    }
}

Obrigado e um grande abraço!!!

R

bom dia neoCortex.

java.lang.ClassNotFoundException: org.postgresql.Driver

pelo código de erro, ou vc está com o driver com problemas, ou não está bem instalado.
Quando nada funciona direito eu refaço, baixo jars novamente. Verifique o seu driver.
um forte abraço, roger :smiley:

D

roger2007:
bom dia neoCortex.

java.lang.ClassNotFoundException: org.postgresql.Driver

pelo código de erro, ou vc está com o driver com problemas, ou não está bem instalado.
Quando nada funciona direito eu refaço, baixo jars novamente. Verifique o seu driver.
um forte abraço, roger :D

Neo, o Roger está correto, o erro:

é em função do seu jar do postgresql não estar no classpath.

para rodar a sua aplicação, informando o driver manualmente você pode utilizar:
java -cp postgresql-8.0-310.jdbc3.jar Estudo.Principal

ou se estiver gerando um jar:
java -cp postgresql-8.0-310.jdbc3.jar;Estudo.jar Estudo.Principal

Se estiver utilizando o IDE netbeans, em propriedades do projeto possui a opção para adicionar o jar no item biblioteca.

No eclipse, você pode incluir no library ou no java build path (em propriedades do projeto).

fw

N

Dieval Guizelini:
roger2007:
bom dia neoCortex.

java.lang.ClassNotFoundException: org.postgresql.Driver

pelo código de erro, ou vc está com o driver com problemas, ou não está bem instalado.
Quando nada funciona direito eu refaço, baixo jars novamente. Verifique o seu driver.
um forte abraço, roger :D

Neo, o Roger está correto, o erro:

é em função do seu jar do postgresql não estar no classpath.

para rodar a sua aplicação, informando o driver manualmente você pode utilizar:
java -cp postgresql-8.0-310.jdbc3.jar Estudo.Principal

ou se estiver gerando um jar:
java -cp postgresql-8.0-310.jdbc3.jar;Estudo.jar Estudo.Principal

Se estiver utilizando o IDE netbeans, em propriedades do projeto possui a opção para adicionar o jar no item biblioteca.

No eclipse, você pode incluir no library ou no java build path (em propriedades do projeto).

fw

Amigos, boa Tarde!!!

Roger, Dieval…Verifiquei o driver aqui e realmente foi um erro de minha parte na inclusão da biblioteca(Driver JAR) no projeto. Refiz meus passos atentando para o mesmo.
De fato achei que a inclusão da biblioteca estava ok porquê adicionei a mesma no diretório “src” do projeto no NetBeans e ela apareceu em meio as classes do projeto porém, não na parte de bibliotecas.

Segui os passos do amigo Dieval e funcionou no NetBeans e tudo correu bem.

Gente, muito obrigado por vossa ajuda, e peço desculpas pelo incômodo que causei… Prometo que isso nunca voltará acontecer :smiley:

Um Grande Abraço!!!

Criado 16 de fevereiro de 2008
Ultima resposta 18 de fev. de 2008
Respostas 13
Participantes 5