Erro de conxecao com banco de dados Postgres - HTTP Status 500 - java.sql.SQLException
19 respostas
juni0r25
Olá pessoal estou fazendo a apostila da caelum fj21, e estou tentando inserir alguns dados no banco. Estou usando o postgres. Mas quando eu executo aparece essa tela de erro no navegador:
Você precisa adicionar o driver de conexão do banco de dados e referenciá-lo no build path do seu projeto. Já fez isso?
Esse erro geralmente acontece quando não se encontra o driver…
Corrigindo, esse erro ocorre quando o driver não reconhece a URL definida para a tentativa de conexão.
Quando o driver não é encontrado, a exceção lançada é a simples NoClassDefFound ou mesmo ClassNotFoundException, afinal, o carregamento do driver é através de reflection.
A mensagem informada se refere à url
publicvoidadiciona(Contatocontato){Stringsql="insert into contatos(nome, email, endereco, dataNascimento) values (?,?,?,?)";try{PreparedStatementstmt=connection.prepareStatement(sql);//seta os valor no bancostmt.setString(1,contato.getNome());stmt.setString(2,contato.getEmail());stmt.setString(3,contato.getEndereco());stmt.setDate(4,newDate(contato.getDataNascimento().getTimeInMillis()));//executarstmt.execute();stmt.close();}catch(SQLExceptione){thrownewRuntimeException(e);}}
Ruttmann
drsmachado:
Ruttmann:
Você precisa adicionar o driver de conexão do banco de dados e referenciá-lo no build path do seu projeto. Já fez isso?
Esse erro geralmente acontece quando não se encontra o driver…
Corrigindo, esse erro ocorre quando o driver não reconhece a URL definida para a tentativa de conexão.
Quando o driver não é encontrado, a exceção lançada é a simples NoClassDefFound ou mesmo ClassNotFoundException, afinal, o carregamento do driver é através de reflection.
A mensagem informada se refere à url
publicvoidadiciona(Contatocontato){Stringsql="insert into contatos(nome, email, endereco, dataNascimento) values (?,?,?,?)";try{PreparedStatementstmt=connection.prepareStatement(sql);//seta os valor no bancostmt.setString(1,contato.getNome());stmt.setString(2,contato.getEmail());stmt.setString(3,contato.getEndereco());stmt.setDate(4,newDate(contato.getDataNascimento().getTimeInMillis()));//executarstmt.execute();stmt.close();}catch(SQLExceptione){thrownewRuntimeException(e);}}
De onde vem esse objeto connection? Onde ele é instanciado? Note que dentro deste método isso não ocorre, se ele não é instanciado no construtor da classe, estará nulo e disparará a exceção em questão.
drsmachado
Ruttmann:
Realmente, errei.
:P
Eu apanhei muito desse erro no começo, por isso aprendi.
juni0r25
Sim sim:
publicclassContatoDAO{//É o plug para se conectar no bancoprivateConnectionconnection;publicContatoDAO(){this.connection=newConnectionFactory().getConnection();}
drsmachado
A única opção é que o método getConnection da classe ConnectionFactory está retornando um valor nulo.
Se o método é este
Provavelmente não está conseguindo estabelecer uma conexão.
juni0r25
Ainda não consegui solucionar, tentei tudo que você me passou, busquei em outros tópicos, também naquele informado. Mais até agora travei aqui nessa situação!