Não consigo gravar no banco usando JDBC em projeto WEB
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
Curtidas 0
Melhor post
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
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
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
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
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
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
Att Davi
GOSTEI 0
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
09/02/2011
Testa e passa esse feedBack p gente, aqui uso FireFox numa boa.
Abcs.
Att Davi
Abcs.
Att Davi
GOSTEI 0
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
09/02/2011
Mas está dando erro?
Deposi que vc refez teve algum problema?
Att Davi
Deposi que vc refez teve algum problema?
Att Davi
GOSTEI 0
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
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
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
09/02/2011
Problema Persiste ou foi corrigido ?
Caso esteja corrigido favor fechar a pendencia !
Valeu !
Caso esteja corrigido favor fechar a pendencia !
Valeu !
GOSTEI 0
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
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
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
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
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
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
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
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
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
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