Exercicio 5.9 FJ21

5 respostas
carloshsamaral

Pessoal não consigo fazer o exercício, estou muito confuso introduzo os dados do formulário e da erro =S, insiro os dados e da erro 500, tirei a data de nascimento porque só dava erro de conversão se alguém tambem conseguir me ajudar, agradeceria =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.caelum.agenda.servlet.ConnectionFactory.getConnection(ConnectionFactory.java:17)
	br.com.caelum.agenda.servlet.ContatoDAO.<init>(ContatoDAO.java:17)
	br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:48)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

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.caelum.agenda.servlet.ConnectionFactory.getConnection(ConnectionFactory.java:14)
	br.com.caelum.agenda.servlet.ContatoDAO.<init>(ContatoDAO.java:17)
	br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:48)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.
Apache Tomcat/7.0.23
AdicionaContatoServlet
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.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



public class AdicionaContatoServlet extends HttpServlet {
	protected void service(HttpServletRequest request,
			HttpServletResponse response) throws IOException, ServletException {
		// BUSCA O WRITER
		PrintWriter out = response.getWriter();

		// buscando os parametros no request
		String nome = request.getParameter("nome");
		String endereco = request.getParameter("endereco");
		String email = request.getParameter("email");
//		String dataEmTexto = request.getParameter("dataNascimento");
//		Calendar dataNascimento = null;

		// fazendo a conversão da data
	/*	try {
			Date data = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
			dataNascimento = Calendar.getInstance();
			dataNascimento.setTime(data);
		} catch (ParseException e) {
			out.print("Erro de conversão de data");
			return;
			// return para parar a execução do metodo
		}*/
		// monta um objeto contato
		Contato contato = new Contato();
		contato.setNome(nome);
		contato.setEndereco(endereco);
		contato.setEmail(email);
//		contato.setDataNascimento(dataNascimento);

		// salva o contato
		ContatoDAO dao = new ContatoDAO();
		dao.adiciona(contato);

		// imprime o metodo contato que foi inserido

		out.print("<html>");
		out.print("<body>");
		out.print("Contato" + contato.getNome() + " adicionado com sucesso");
		out.print("</body>");
		out.print("</html>");

	}

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

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Contato {

	private Long id;
	private String nome, email,endereco;
	private Calendar dataNascimento;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public Calendar getDataNascimento() {
		return dataNascimento;
	}
	public void setDataNascimento(Calendar dataNascimento) {
//		String dataEmTexto = request.getParameter("dataNascimento");
//		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
		this.dataNascimento = dataNascimento;
	}
	
//    public String getDataFormatada() {  
//        SimpleDateFormat formatado = new SimpleDateFormat("dd/MM/yyyy");  
//        String dataFormat = formatado.format(dataNas);  
//        return dataFormat;  
//    } 
	
	
}
ContatoDAO
package br.com.caelum.agenda.servlet;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Contato {

	private Long id;
	private String nome, email,endereco;
	private Calendar dataNascimento;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public Calendar getDataNascimento() {
		return dataNascimento;
	}
	public void setDataNascimento(Calendar dataNascimento) {
//		String dataEmTexto = request.getParameter("dataNascimento");
//		Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
		this.dataNascimento = dataNascimento;
	}
	
//    public String getDataFormatada() {  
//        SimpleDateFormat formatado = new SimpleDateFormat("dd/MM/yyyy");  
//        String dataFormat = formatado.format(dataNas);  
//        return dataFormat;  
//    } 
	
	
}

5 Respostas

Master.Abs

No suitable driver found for jdbc:mysql://localhost/fj21 == Nenhum driver adequado encontrado

Pode ser que esteja faltando a lib do mysql.

OU

http://www.guj.com.br/java/42115-conexao-mysql-com-java—driver-nao-encontrado

carloshsamaral

Master.abs vc sempre tentando me ajudar obrigado mesmo, só que já está o driver na pasta LIB =(
Este é o erro que da no console

03/04/2012 11:50:53 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Arquivos de programas\Java\jdk1.5.0_06\bin;C:\eclipse;;. 03/04/2012 11:50:55 org.apache.tomcat.util.digester.SetPropertiesRule begin AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:fj21-agenda' did not find a matching property. 03/04/2012 11:50:55 org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["http-bio-7070"] 03/04/2012 11:50:55 org.apache.coyote.AbstractProtocol init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 03/04/2012 11:50:55 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 3690 ms 03/04/2012 11:50:56 org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina 03/04/2012 11:50:56 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.23 03/04/2012 11:50:57 org.apache.catalina.util.SessionIdGenerator createSecureRandom INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [122] milliseconds. 03/04/2012 11:50:57 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["http-bio-7070"] 03/04/2012 11:50:58 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ajp-bio-8009"] 03/04/2012 11:50:58 org.apache.catalina.startup.Catalina start INFO: Server startup in 2236 ms Conectado ao banco de dados! 03/04/2012 11:51:27 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet [AdicionaContato] in context with path [/fj21-agenda] threw exception java.lang.RuntimeException: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21 at br.com.caelum.agenda.servlet.ConnectionFactory.getConnection(ConnectionFactory.java:17) at br.com.caelum.agenda.servlet.ContatoDAO.<init>(ContatoDAO.java:17) at br.com.caelum.agenda.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:48) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/fj21 at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at br.com.caelum.agenda.servlet.ConnectionFactory.getConnection(ConnectionFactory.java:14) ... 19 more

Master.Abs

Uma dúvida a base de dados que você criou no mysql tem o nome de fj21 mesmo ?

carloshsamaral

Sim tem, e tem a tabela contatos dentro dela.

sidney.tavares

Ola carloshsamaral,

Eu estava com o mesmo problema, estou usando o Tomcat 7, não sei qual você usa, mas no meu caso resolveu depois que copiei a lib do mysql para a pasta lib do Tomcat, sem remover o driver do projeto. Espero ter ajudado.

Criado 3 de abril de 2012
Ultima resposta 4 de abr. de 2012
Respostas 5
Participantes 3