Não consigo gravar no banco usando JDBC em projeto WEB

Java

09/02/2011

Tenho dois projetos que estou testando numa apostila que eu baixei. Na primeira funciona, é um projeto Java SE. Peguei as classes e migrei para o meu Projeto WEB. Aí não está funcionando, está dando aquele erro de: No suitable drivers found for jdbc:MySql. O que devo fazer? Instalei o jar do mysql no meu projeto. Só uma dúvida. Antes o .jar não estava aparecendo na raiz do meu projeto WEB, mas no SE estava. Eu copiei o jar para o meu workspace e depois eu dei um Install JAR e aí apareceu, mas ainda não grava. Eu estou acompanhando a apostila FJ21 da Caelum. Vira e mexe eu to sempre apanhando na configuração de meu Ambiente. Qquer ajuda é bem-vinda!
Pjava

Pjava

Curtidas 0

Melhor post

Pjava

Pjava

13/02/2011

Resolvi esse problema assim:

package br.com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.mysql.jdbc.Driver;


public class connectionFactory {
    public Connection getConnection() {
    System.out.println("Conectando ao banco");
    try {
            //Class.forName("com.mysql.jdbc.Driver");
            DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //Essa linha foi a diferença
            return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "simbad");
            } catch(SQLException e) {
                e.printStackTrace();
                throw new RuntimeException(e);
            
        }
        
    }
}

GOSTEI 6

Mais Respostas

Pjava

Pjava

09/02/2011

Esse é  o erro q dá.

HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21 br.com.jdbc.connectionFactory.getConnection(connectionFactory.java:11) br.com.DAO.ContatoDAO.<init>(ContatoDAO.java:16) br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:68) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21 java.sql.DriverManager.getConnection(Unknown Source) java.sql.DriverManager.getConnection(Unknown Source) br.com.jdbc.connectionFactory.getConnection(connectionFactory.java:9) br.com.DAO.ContatoDAO.<init>(ContatoDAO.java:16) br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:68) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) note The full stack trace of the root cause is available in the Apache Tomcat/6.0.29 logs. Apache Tomcat/6.0.29
GOSTEI 0
Robson Teixeira

Robson Teixeira

09/02/2011

Olá Paulo
 
   você setou o driver do Mysql na sua aplicação ??? ou fez o uso do metodos Class.forName() para carregar o driver na memoria???

att
  robson Passarella
GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

Se estiver utilizando o eclipse, basta colocar o jar na pasta lib, e no netBeans vc precisa usar a opção external jar.

Att Davi
GOSTEI 0
Pjava

Pjava

09/02/2011

Ok, vou salvar as classes q já escrevi e refazer outra vez. Uma pergunta apenas: Não consigo mais me logar nesse forum com o MineField(Antigo FireFox). Porque será? Só consigo via IE e ainda dizem que o IE não presta.
GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

Testa e passa esse feedBack p gente, aqui uso FireFox numa boa.

Abcs.

Att Davi
GOSTEI 0
Pjava

Pjava

09/02/2011

Minha classe connectionFactory  package br.com.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class connectionFactory { public Connection getConnection() { System.out.println("Conectando ao banco"); try {          //Class.forName("com.mysql.jdbc.Driver");            return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "simbad"); } catch(SQLException e) {                                                throw new RuntimeException(e);          }      } }
GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

Mas está dando erro?

Deposi que vc refez teve algum problema?

Att Davi
GOSTEI 0
Pjava

Pjava

09/02/2011

Veja que eu comentei o Class.forName.., pois me dá erro aí(Unhandled exception type ClassNotFoundException). Fora isso, não dá nenhum erro, somente quando eu tento gravar no banco de dados, aí dá aquele erro 500 que eu já póstei aí para vocês. O interessante, é que eu ainda não conseguir muita coisa, tipo, sempre me dá algum tipo de erro em alguma coisa. JSF não consegui e agora para gravar no Banco. Isso é porque ainda não tentei Hibernate e nem JPA e Struts e Spring e etc.... É coisa de outro mundo tudo isso aqui. Tenho o mesmo Driver, as mesmas classes, mas em um projeto funciona e outro não. Barbaridade. Só mais uma. Quando eu copio o driver e coloco na pasta LIB, o icone recebe uma imagenzinha nele, parecida com aquela do Java resource, mas bem pequena, na parte inferior esquerda do ícone principal do JAR. Só uma pergunta, como eu instalo essa bagaça. Eu faço assim: Clico com o direito em cima do projeto e seleciona Build Path >> Configure Build Path. Aí, vou em External Jars e seleciono o Driver e pronto. Tentei copiar e colar na pasta lib, mas não deu certo também. É desse jeito mesmo?
GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

No eclipseem um projeto web basta colocar na pasta lib.
Estou começando a desconfiar q seu banco não esteja no ar, e em relação a imagem é isso mesmo, já está no seu path esse jar.
Tenta ver essa questão do banco, vê se o serviço do mysql está startado.

Att Davi


Divulgando:

https://www.devmedia.com.br/post-19391-Desmistificando-a-Certificacao-SCJP6-Parte-V-Parte-2-3.html
https://www.devmedia.com.br/post-19392-Desmistificando-a-Certificacao-SCJP6-Parte-V-Parte-3-3.html
https://www.devmedia.com.br/post-19390-Desmistificando-a-Certificacao-SCJP6-Parte-V-Parte-1-3.html
GOSTEI 0
Dyego Carmo

Dyego Carmo

09/02/2011

Problema Persiste ou foi corrigido ?

Caso esteja corrigido favor fechar a pendencia !

Valeu !
GOSTEI 0
Pjava

Pjava

09/02/2011

Quanto ao banco, está startado sim, pois abro o Workbeanch do MySql e dou select nele tranquilo e no gerenciador de tarefas, lá está o MySql.exe.
GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

Sendo assim, é bom verificar se está tudo ok,
 vê essa linha se tudo bate:
return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "simbad");

Olha no seu build Path se está realmente o jar do mysql.

Att Davi
GOSTEI 0
Pjava

Pjava

09/02/2011

Só me responde uma coisa. Eu removi do meu Build Path o Jar e do projeto também. Aí fiz o passo-a-passo novamente. Direito no projeto, Build Path >> Configure Build Path >> External Jars >> mysql-connector-java-5.1.14-bin. Esse é p passo que dei. Acontece que esse driver, ele não vai para a pasta LIB e sim, para: Java Resource:src >> Libraries. Abaixo uma imagem do meu ambiente e observe os dois projetos: FJ21-Agenda e JDBC e veja os drivers como estão. No JDBC funciona. Eu gravo, atualizo e deleto usando apenas Java. Interessante é que no IE eu não consigo colar uma imagem aqui, mas no Minefield eu consigo.



GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

Pois cara é bom conferir tudo, senha, nome do banco,pq o jar aparentemente está lá sim, por desencargo coloca na pasta lib também. E debuga para ver realmente o erro no console.

Faz essa alteração:

try {          //Class.forName("com.mysql.jdbc.Driver");            return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "simbad"); } catch(SQLException e) {                                     e.printStackTrace();
                                               throw new RuntimeException(e);          }      } }
Para realmente vermos qual erro.
Att Davi

GOSTEI 0
Pjava

Pjava

09/02/2011

Se eu fosse fazer isso com Oracle 10g ou 9i ou Sql Server Express, como eu faria? O que eu mudaria? Só para testar com outro banco e saber se é ou não o MySql?
GOSTEI 0
Davi Costa

Davi Costa

09/02/2011

Alteraria esse parâmetro:

Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://localhost/fj21", "root", "simbad");


E o jar do respectivo banco.

Att Davi
GOSTEI 0
Pjava

Pjava

09/02/2011

quanto a essa linha, tá tudo em ordem, pelo visto, pois é com ela que eu gravo em minha outra aplicação.
GOSTEI 0
POSTAR