Estou estudando java web e estou tendo um problema… fiz uma conexão com postgres e criei uma classe para testar esta conexão funciona direitinho, inseri dados numa tabela de contatos até ai tudo bem, mas quando criei um formulário para inserir dados na tabela me ocorre um erro:
“HTTP Status 500 - java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost/caelum”
Não entendo como o driver não é encontrado ao inserir dados pelo formulário se quando eu testo a conexão ou até para inserir dados na mão mesmo pelo código funciona.
Estou usando o eclipse, será algo que esqueci de fazer?? Estou me familiarizando melhor agora com a IDE.
Provavelmente é problema de classpath. Se estiver rodando um código de testes, em uma classe qualquer e um método main por exemplo, basta o jar do driver do postgres estar no classpath, podendo estar em qualquer pasta do projeto, ou até fora.
Já para rodar o projeto como web, o driver precisa estar em WebContent/WEB-INF/lib. Verifique se está nessa pasta.
J
jgsilva
O driver está certinho dentro da lib como você mencionou fredericomaia10, ainda não consegui resolver vou postar um código pra ver se vocês encontram algum problema.
Abaixo está o servlet que é chamado ao clicar em cadastrar na página de formulário. Está tudo ok com está conversão de data?? Embora eu esteja estudando pela apostila da caelum fiz como esta lá.
/** * Servlet implementation class AdicionaContatoServlet */@WebServlet("/adicionaContato")publicclassAdicionaContatoServletextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;/** * @see HttpServlet#HttpServlet() */publicAdicionaContatoServlet(){super();}protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{PrintWriterout=response.getWriter();Stringnome=request.getParameter("nome");Stringemail=request.getParameter("email");Stringendereco=request.getParameter("endereco");StringdataEmTexto=request.getParameter("dataNascimento");CalendardataNascimento=null;try{Datedate=newSimpleDateFormat("dd/MM/yyy").parse(dataEmTexto);dataNascimento=Calendar.getInstance();dataNascimento.setTime(date);}catch(ParseExceptione){out.println("Erro de conversão da data!");return;}//Cria um objeto contato Contatocontato=newContato();contato.setNome(nome);contato.setEmail(email);contato.setEndereco(endereco);contato.setDataNascimento(dataNascimento);//Salva o contatoContatoDAOdao=newContatoDAO();dao.adiciona(contato);//Imprime o nome do contato que foi adicionadoout.println("<html>");out.println("<body>");out.println("Contato: "+contato.getNome()+"adicionado com sucesso!");out.println("</body>");out.println("</html>");}protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}
Abaixo está minha classe ConnectionFactory, não acredito que tenha algum problema aqui, mas…
Boa tarde! Por favor, adicione a seguinte linha, logo no início do bloco Try: Segue: Class.forName("org.postgresql.Driver");
Sua classe deve ficar conforme abaixo:
packagebr.com.caelum.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassConnectionFactory{publicConnectiongetConnection(){try{Class.forName("org.postgresql.Driver");//nova linha necessaria para que o WebContainer (Tomcat) encontre a classe Driver JBDC do Postgres returnDriverManager.getConnection("jdbc:postgresql://localhost/caelum","postgres","123456");}catch(SQLExceptione){thrownewRuntimeException(e);}}}
Como você já copiou o arquivo JAR do JDBC na pasta lib, tudo deve funcionar com sucesso.