GARANTIR DESCONTO

Fórum Não consigo gravar no banco usando JDBC em projeto WEB #395387

09/02/2011

0

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

Responder

Post mais votado

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);
            
        }
        
    }
}

Pjava

Pjava
Responder

Gostei + 6

Mais Posts

09/02/2011

Pjava

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
Responder

Gostei + 0

09/02/2011

Robson Teixeira

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
Responder

Gostei + 0

09/02/2011

Davi Costa

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
Responder

Gostei + 0

11/02/2011

Pjava

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.
Responder

Gostei + 0

11/02/2011

Davi Costa

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

Abcs.

Att Davi
Responder

Gostei + 0

11/02/2011

Pjava

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);          }      } }
Responder

Gostei + 0

11/02/2011

Davi Costa

Mas está dando erro?

Deposi que vc refez teve algum problema?

Att Davi
Responder

Gostei + 0

11/02/2011

Pjava

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?
Responder

Gostei + 0

11/02/2011

Davi Costa

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
Responder

Gostei + 0

11/02/2011

Dyego Carmo

Problema Persiste ou foi corrigido ?

Caso esteja corrigido favor fechar a pendencia !

Valeu !
Responder

Gostei + 0

11/02/2011

Pjava

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.
Responder

Gostei + 0

11/02/2011

Davi Costa

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
Responder

Gostei + 0

11/02/2011

Pjava

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.



Responder

Gostei + 0

11/02/2011

Davi Costa

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

Responder

Gostei + 0

11/02/2011

Pjava

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?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar