Olá Galera,
Estou com um erro no meu programa e já tentei resolver de varias maneiras sem exito. Estou estudando e não conheço muito ainda de Java EE. Criei minha pagina web, meu servlet e minha conexão com o banco. Quando preencho o formulario na web e clico em gravar ele me retorna um erro que não acho um driver jdbc, porém criei um class que faz o mesmo insert da WEB mas não executo ela via web e ela funciona chamando a mesma conexão com o banco. Alguém poderia dar um dica para tentar resolver o problema ? Obrigado !!!
Dados:
TomCat 7;
MySQL;
Connector eu peguei no site do MySQL para TomCat 7.
Erro:
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/db_jdbc
br.com.anderson.conexao.ConnectionFactory.getConnection(ConnectionFactory.java:22)
br.com.anderson.conexao.ContatoDAO.(ContatoDAO.java:17)
br.com.anderson.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:60)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/db_jdbc
java.sql.DriverManager.getConnection(DriverManager.java:604)
java.sql.DriverManager.getConnection(DriverManager.java:221)
br.com.anderson.conexao.ConnectionFactory.getConnection(ConnectionFactory.java:15)
br.com.anderson.conexao.ContatoDAO.(ContatoDAO.java:17)
br.com.anderson.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:60)
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.27 logs.
Codigos Fonte:
ConnectionFactory
package br.com.anderson.conexao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory {
public Connection getConnection() {
System.out.println("Conectando ao banco de dados...");
try {
return DriverManager.getConnection(
"jdbc:mysql://localhost/db_jdbc", "root", "password");
} catch (SQLException e) {
System.out.println("Erro ao conectar no banco de dados !");
System.out.println("Erro SQL:" + e);
throw new RuntimeException(e);
}
}
}
ContatoDAO
package br.com.anderson.conexao;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.anderson.modelo.Contato;
public class ContatoDAO {
private Connection connection;
public ContatoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void setAdiciona(Contato contato) throws SQLException {
try {
// Cria um preparedStatement
String sql = "insert into tb_contatos (nm_contato,email_contato,end_contato,data_contato) values (?,?,?,?)";
PreparedStatement stmt = this.connection.prepareStatement(sql);
// Preenche os valores
stmt.setString(1, contato.getNome());
stmt.setString(2, contato.getEmail());
stmt.setString(3, contato.getEndereco());
stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
// Executa comando
stmt.execute();
stmt.close();
} catch (Exception e) {
System.out.println("Erro ao executar o ContatoDAO");
throw new RuntimeException(e);
} finally {
this.connection.close();
}
}
}
AdicionaContatoServlet
package br.com.anderson.servlet;
import br.com.anderson.conexao.ContatoDAO;
import br.com.anderson.modelo.Contato;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
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 {
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// Pega os parametros da pagina em html
PrintWriter out = response.getWriter();
String nome = request.getParameter("nome");
String email = request.getParameter("email");
String endereco = request.getParameter("endereco");
String dataEmtexto = request.getParameter("dataNascimento");
Calendar dataNascimento = null;
// Converte a data em Calendar
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmtexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(date);
} catch (ParseException e) {
out.println("Erro na conversao !!!");
return;
}
// Monta um objeto do tipo contato
Contato contato = new Contato();
contato.setNome(nome);
contato.setEndereco(endereco);
contato.setEmail(email);
contato.setDataNascimento(dataNascimento);
// Cria um Contato na DB atraves da ContatoDAO
ContatoDAO db = new ContatoDAO();
try {
db.setAdiciona(contato);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// gera pagina html com o nome do contato adicionado
out.println("<html>");
out.println("<body>");
out.println("Contato " + contato.getNome() + contato.getNome()
+ " adicionado com sucesso");
out.println("</body>");
out.println("</html>");
// super.service(resquest, response);
}
}
ExecInser ( CLasse que criei para testar a conexão do banco ( ContatoDAO))
package br.com.anderson.servlet;
import java.sql.SQLException;
import java.util.Calendar;
import br.com.anderson.conexao.ContatoDAO;
import br.com.anderson.modelo.Contato;
public class ExecInsert {
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
// Cria Contato
Calendar c = Calendar.getInstance();
c.set(2012, 04, 30,15,50,00);
Contato contato = new Contato();
contato.setNome("Maiara Lopes");
contato.setEndereco("mlopes");
contato.setEmail("1234");
contato.setDataNascimento(c);
ContatoDAO db = new ContatoDAO();
db.setAdiciona(contato);
System.out.println("Comando executado com sucesso !!!");
}
}
Caso necessário mais informações me falem que eu posto !!! Obrigadooo !!!