No suitable driver found for jdbc:mysql://localhost/fj21 [RESOLVIDO]

25 respostas
L

galera eu to desenvolvendo meu tcc…e quando eu rodo ele na web da o seguinte erro…

[color=red]GRAVE: Servlet.service() for servlet AdicionaContato threw exception
java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21
[/color]

mais eu sei q tah falando do driver…

mais esse erro da quando eu tento alterar o código…

eu fiz um código q adicionava nome, endereço, e-mail e data de nascimento ai ele roda normal e adiciona no bd…
mais ai quando eu otras variaveis como, login, senha, numero da CNH, cpf e telefone ele gera esse erro…eu alterei na classe ContatoDAO, Contato, AdicionaContato e claro no código HTML e no bd eu add as tais colunas…

meu professor disse q pode ser por causa do windows(ele é meio fissurado no linux).

se v6 precisarem do código é só pedi…obrigado!

25 Respostas

D

Na verdade, não tem a ver com o Windows.
A princípio, pode se tratar de erro no formato da string ou erro na versão do driver (não bem um erro, mas uma incompatibilidade).

L

se eu utilizar o tomcat 7.0 resolveria o problema?

Obrigado!

D

lukkinhas:
se eu utilizar o tomcat 7.0 resolveria o problema?

Obrigado!


Também não tem nada a ver com o servidor…
É uma questão do driver mysql…

D

Qual WebContainer vc esta usando ? TomCat, GlassFish …

Bem … geralmente tenho esses problemas pelo Driver do MySql não estar no WebContainer …

L

to usando o tomcat 6.0

o q eu teria q fazer?

D

Colocar o jar do mysql_connector na pasta lib da aplicação

L

mais jah ta lah

/aluguelweb/WebContent/WEB-INF/lib/mysql-connector-java-5.1.7-bin.jar

L

e ainda num ta funcionando…gostaria de saber o fazer pra resolver esse problema… :lol:

H

mais jah ta lah

/aluguelweb/WebContent/WEB-INF/lib/mysql-connector-java-5.1.7-bin.jar


Não basta apenas colocar o driver na pasta lib, vc tem que importar ele pra dentro da sua aplicação.

D

Cara … vc esta adicionando a Jar do Drive no ClassPath ? Seria o mesmo que o Hugo esta perguntando …
Coloca o drive tb junto das Libs do TomCat …

C

como é uma aplicação web quando ele coloca na pasta que falou a cima a lib já é adicionada ao ClassPath da aplicação…

mas mesmo assim tenta colocar o driver do MySql dentro da pasta de libs genéricas do TomCat, vai na diretório do servidor e procura a pasta lib e cola o jar nela, obs. tem que lembrar de retirar o driver da lib da aplicação, aqui eu já deixo o driver de conexão com o banco direto na pasta genérica e nunca deu erro.

D

Então Charles, se for JSF 2 vc precisa além de colocar as Libs na pasta é preciso “Registrar” elas no ClassPath …

L

puts o q é estranho é q quando eu deicho do jeito da apostila da caelum da certo…mais é só adiciona mais um negócio q jah da erro…

muito estranho isso…

D

Mas que benditos negócios que você está adicionando?

C

É essa parte de JSF eu tenho que admitir que ainda não estudei…

lukkinhas posta as tuas classes ai e comenta mostrando o que foi que você alterou que parou de funcionar.

L
drsmachado:
Mas que benditos negócios que você está adicionando?

é mais facil eu postar os códigos...

[size=18] Antes tava assim e funcionaando[/size]

package br.com.caelum.jdbc.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import br.com.caelum.jdbc.ConnectionFactory;
import br.com.caelum.jdbc.modelo.Contato;

public class ContatoDAO {

	private Connection connection;
	private Contato contato;

	public ContatoDAO() {
		this.connection = new ConnectionFactory().getConnection();
	}

	public void adiciona(Contato contato) {
		String sql = "insert into contatos (nome,endereco,email,dataNascimento) values (?,?,?,?)";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setString(1, contato.getNome());
			stmt.setString(4, contato.getEndereco());
			stmt.setString(5, contato.getEmail());
			stmt.setDate(6, new Date(contato.getDataNascimento().getTimeInMillis()));
			
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}
}
package br.com.caelum.agenda.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;

public class AdicionaContatoServlet extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException  {
		PrintWriter out = response.getWriter();
		String nome = request.getParameter("nome");
		String endereco = request.getParameter("endereco");
		String email = request.getParameter("email");
		String dataEmTexto = request.getParameter("dataNascimento");
		
		Calendar dataNascimento = null;
		
		try{
			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(date);
		}catch (ParseException e) {
			out.println("Erro na conversão da data");
			return;

		}
		
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEndereco(endereco);
		contato.setEmail(email);
		contato.setDataNascimento(dataNascimento);
		
		ContatoDAO dao = new ContatoDAO();
		dao.adiciona(contato);
		
		RequestDispatcher rd = request.getRequestDispatcher("/contato-adicionado.jsp");
		
		rd.forward(request, response);
		
		
	}

}

[size=18]E dpois q eu mudei ficou assim e num roda mais...[/size]

package br.com.caelum.agenda.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;

public class AdicionaContatoServlet extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException  {
		PrintWriter out = response.getWriter();
		String nome = request.getParameter("nome");
		String login = request.getParameter("login");
		String senha = request.getParameter("senha");
		String endereco = request.getParameter("endereco");
		String email = request.getParameter("email");
		String dataEmTexto = request.getParameter("dataNascimento");
		String cnh = request.getParameter("cnh");
		String cpf = request.getParameter("cpf");
		String telefone = request.getParameter("telefone");
		
		Calendar dataNascimento = null;
		
		try{
			Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(date);
		}catch (ParseException e) {
			out.println("Erro na conversão da data");
			return;

		}
		
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setLogin(login);
		contato.setSenha(senha);
		contato.setEndereco(endereco);
		contato.setEmail(email);
		contato.setDataNascimento(dataNascimento);
		contato.setCnh(cnh);
		contato.setCpf(cpf);
		contato.setTelefone(telefone);
		
		ContatoDAO dao = new ContatoDAO();
		dao.adiciona(contato);
		
		RequestDispatcher rd = request.getRequestDispatcher("/contato-adicionado.jsp");
		
		rd.forward(request, response);
		
		
	}

}
package br.com.caelum.jdbc.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import br.com.caelum.jdbc.ConnectionFactory;
import br.com.caelum.jdbc.modelo.Contato;

public class ContatoDAO {

	private Connection connection;
	private Contato contato;

	public ContatoDAO() {
		this.connection = new ConnectionFactory().getConnection();
	}

	public void adiciona(Contato contato) {
		String sql = "insert into contatos (nome,login,senha,endereco,email,dataNascimento,cnh,cpf,telefone) values (?,?,?,?,?,?,?,?,?)";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);

			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getLogin());
			stmt.setString(3, contato.getSenha());
			stmt.setString(4, contato.getEndereco());
			stmt.setString(5, contato.getEmail());
			stmt.setDate(6, new Date(contato.getDataNascimento().getTimeInMillis()));
			stmt.setString(7, contato.getCnh());
			stmt.setString(8, contato.getCpf());
			stmt.setString(9, contato.getTelefone());
			
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}
}
G

Só confirma se os dados de conexão estão certos na classe ConnectionFactory.

Se estiverem confirma se tu fez esses passos aqui:

  • Clique com o botão direito do mouse no projeto.
  • Selecione “Java Build Path”
  • Aba Libraries
  • Clica em “Add External Archive”
  • Vai abrir uma janela para selecionar um arquivo. Basta selecionar o .jar do driver do mysql.

Ou se tu tiver com o .jar do mysql na pasta lib do projeto:

  • Clique com o botão direito do mouse no projeto.
  • Selecione “Java Build Path”
  • Aba Libraries
  • Clica em “Add Jars”

Depois que associar o .jar, por garantia, dá um refresh em cima do projeto e depois vai no menu PROJETO do Eclipse e dá um Clean nesse teu projeto.

Espero ter ajudado.
Abs

L

vlw cara…

resolvido! fiz os passos e funfo!!!

muito obrigado msm…

G

lukkinhas:
vlw cara…

resolvido! fiz os passos e funfo!!!

muito obrigado msm…


Beleza.
As vezes a gente esquece uns detalhes assim e os erros gerados não especificam locais.
ehehehe

Abs

C

Já está resolvido, mas no meu caso na biblioteca JRE tinha um drive mais antigo instalado (no caso para firebird) o que fiz foi remover de lá tudo relativo ao jaybird e colocar a nova versão.

I

Boa tarde,

Às vezes mesmo com a biblioteca no classpath uma mensagem de que não foi encontrada a classe é retornada.

Por isso, experimente acrescentar ao código de conexão:

Class.forName(“com.mysql.jdbc.Driver”);

Espero ter ajudado.

P

Tenta importar o conector para o seu projeto.
Se estiver usando o Eclipse, clica com o botão direito na pasta principal do projeto.
Depois clica em Build Path > Add External Archives.
Daí você procura e adiciona o conector.

Aqui estava dando esse errinho e, resolvi desta forma.

T

Pessoal, estou com o problema de “No suitable driver found for jdbc:mysql://localhost/fj21”.

Fiz todo o procedimento que está nas respostas anteriores mas ainda continua o erro ao tentar a conexão com o banco de dados.

Estou usando MySQL 5.5 e o JDBC 5.1.29. Coloquei o jar do Mysql na pasta WEB-INF/lib e atualizei meu projeto mas continuou recebendo o erro 'No suitable driver found for jdbc:mysql://localhost/fj21" ao acessar o banco.

Alguem consegue me ajudar?

Obrigado.

S

Tenta adicionar o jar no Classpath do Tomcat

Open launch configuration >> Aba Classpath >> Seleciona o jar que esta dentro da pasta lib

Espero ter ajudado.

A

tiagom, Se tiver utilizando tomcat 7 ou superior deve adicionar o comando: Class.forName(“com.mysql.jdbc.Driver”); conforme o usuário:icozeira recomendou, esse comando é utilizado para evitar vazamento de memória conforme documentação do Apache Tomcat.

seu código ficará mais ou menos assim:

public Connection getConnection(){

try {

Class.forName(“com.mysql.jdbc.Driver”); 			

return DriverManager.getConnection(

jdbc:mysql://localhost/fj21, root, root);

} catch (Exception e) {

throw new RuntimeException(e);

}
Criado 23 de setembro de 2011
Ultima resposta 30 de jul. de 2014
Respostas 25
Participantes 12