0
Guys, I made a first application through the Caelum site in Java EE, a calendar, and all right, all right, fine, I added contacts to MYSQL quietly in the Java part of the workbook, the JDBC driver worked all right and so on... But when I went to Java EE, the program works perfectly, except when I click on "record", it says that no driver was found, however, I added the driver in the same way as in the Java application, by the Build path-add to build path, I don’t know what the problem is, here are the links of the lessons:
http://www.caelum.com.br/apostila-java-web/servlets/ http://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/
and my code... is updated now that the problem has been solved. Simply add the Try/catch method to the Add-On class after Class.forname which was added to the Connectionfactory class !
package minha.agenda.ozzy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionFactory{
    public Connection getConnection () throws ClassNotFoundException{
        try{
            Class.forName("com.mysql.jdbc.Driver");
            return DriverManager.getConnection(
                        "jdbc:mysql://localhost/bDados", "gabrielDados", "25120107");
        } catch(SQLException e){
            throw new RuntimeException(e);
        }
    }
}
package minha.agenda.ozzy;
import java.util.Calendar;
public class Contato {
    private Long id;
    private String nome;
    private String email;
    private String end;
    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 end;
    }
    public void setEndereco(String end){
        this.end = end;
    }
    public Calendar getDataNascimento(){
        return dataNascimento;
    }
    public void setDataNascimento(Calendar dataNascimento){
        this.dataNascimento = dataNascimento;
    }
}
package minha.agenda.ozzy;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Date;
import java.sql.SQLException;
public class ContatoDao {
    private Connection connection;
    public ContatoDao() throws ClassNotFoundException{
        this.connection = new ConnectionFactory().getConnection();
    }
    public void adiciona(Contato contato){
        String sql = "insert into contatos"+
                    "(nome, email, endereco, dataNascimento)"+
                    "values (?,?,?,?)";
        try{
            PreparedStatement stmt = connection.prepareStatement(sql);
            stmt.setString(1,contato.getNome());
            stmt.setString(2,contato.getEmail());
            stmt.setString(3,contato.getEndereco());
            stmt.setDate(4, new Date(
                        contato.getDataNascimento().getTimeInMillis()));
            stmt.execute();
            stmt.close();
        } catch (SQLException e){
            throw new RuntimeException(e);
        }
    }
}
package minha.agenda.ozzy;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;
@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    protected void service (HttpServletRequest request,
                            HttpServletResponse response)
                            throws IOException, ServletException{
        PrintWriter out = response.getWriter();
        String nome = request.getParameter("nome");
        String email = request.getParameter("email");
        String end = request.getParameter("end");
        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 de conversão de data");
            return;
        }
        Contato contato = new Contato();
        contato.setNome(nome);
        contato.setEmail(email);
        contato.setEndereco(end);
        contato.setDataNascimento(dataNascimento);
        ContatoDao dao = null;
        try{
            dao = new ContatoDao();
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        dao.adiciona(contato);
        out.println("<html>");
        out.println("<body>");
        out.println("Contato" + contato.getNome() + "adicionado com sucesso!");
        out.println("</body>");
        out.println("</html>");
    }
}
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1> Adiciona Contatos </h1>
    <form action ="adicionaContato">
        Nome: <input type="text" name="nome" /><br />
        Email: <input type="text" name="email" /><br />
        Endereço: <input type="text" name="end" /><br />
        Data de Nascimento: <input type="text" name="dataNascimento" /><br />
        <input type="submit" value="Gravar" />
    </form>
</body>
</html>
Try to add the following code just before the line
return DriverManager..., inside the Try:Class.forName("com.mysql.jdbc.Driver");– Math
I tried, man, but I had to change some codes of the other classes and... it didn’t work either !
– Gabriel
What made you have to change other classes? It was the above code I asked you to add?
– Math
Are you using a Web Container? Which one? If you are using, does the Mysql jar not need to be in a Container folder for it to load into
ClassLoader?– Wakim
From what I saw in the booklet, it uses Tomcat, you need to place the Mysql Connector jar inside the Tomcat lib folder (http://stackoverflow.com/questions/1610277/tomcat-does-not-recognize-the-mysql-jar-library).
– Wakim
@Math, yes man, as soon as I changed the Connectionfactory I had to change Contact and Contact...
– Gabriel
@Wakim, the worst is that I’ve tried this too but... Unsuccessful!
– Gabriel
@Math, I was able to solve the error I was giving and your solution turned out ! What is Class.forname ? what he does, could you please explain to me ? Thank you !
– Gabriel
@user3632011 I am marking your question as duplicate of a similar one. I will try to elaborate better my answer there because it is not very deep, but it will have to be a little later because I am working today.
– Math