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

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!

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

se eu utilizar o tomcat 7.0 resolveria o problema?

Obrigado!

[quote=lukkinhas]se eu utilizar o tomcat 7.0 resolveria o problema?

Obrigado![/quote]
Também não tem nada a ver com o servidor…
É uma questão do driver mysql…

Qual WebContainer vc esta usando ? TomCat, GlassFish …

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

to usando o tomcat 6.0

o q eu teria q fazer?

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

mais jah ta lah

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

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

mais jah ta lah

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

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

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 …

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.

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

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…

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

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

é mais facil eu postar os códigos…

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

[code]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);
	}

}

}[/code]

[code]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);
	
	
}

}
[/code]

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

	}
}

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

vlw cara…

resolvido! fiz os passos e funfo!!!

muito obrigado msm…

[quote=lukkinhas]vlw cara…

resolvido! fiz os passos e funfo!!!

muito obrigado msm…[/quote]
Beleza.
As vezes a gente esquece uns detalhes assim e os erros gerados não especificam locais.
ehehehe

Abs