Olá galera
Estou aprendendo a trabalhar com JavaEE
Baixei uma apostila da Caelum e estou seguindo
Só que em um exercicio esta dando erro ao conectar com o banco
segue o codigo abaixo
public class ContatoDAO {
public void adiciona(Contato contato){
String sql = "insert into contatos (nome,email,endereco,dataNascimento) values (?,?,?,?)";
try{
Connection conn = ConnectionFactory.getConnection();
PreparedStatement stmt = conn.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() ));
// executa
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
public class AdicionaContatoServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Busca o Writer
PrintWriter out = response.getWriter();
//Busca os parâmetros 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 de data
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;
}
//Monta um objeto contato
Contato contato = new Contato();
contato.setNome(nome);
contato.setEndereco(endereco);
contato.setEmail(email);
contato.setDataNascimento(dataNascimento);
//Salva o contato
new ContatoDAO().adiciona(contato);
JOptionPane.showMessageDialog(null, nome);
JOptionPane.showMessageDialog(null, endereco);
JOptionPane.showMessageDialog(null, email);
//Imprimi o nome do contato que foi adicionado
out.println("<html>");
out.println("<body>");
out.println("O contato "+ contato.getNome() +" foi adicionado com sucesso");
out.println("</body>");
out.println("</html>");
}
package br.com.caelum.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.swing.JOptionPane;
public class ConnectionFactory {
private static Connection conn = null;
public final static String DRIVER = "com.mysql.jdbc.Driver";
public final static String URL = "jdbc:mysql://localhost:3306/fj21";
public static String USER = "root";
public static String PASSWD = "root";
public ConnectionFactory(){
if (conn == null){
loadDriver();
}
}
private static void loadDriver() {
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PASSWD);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Falha na conex�o com o banco");
e.printStackTrace();
}
}
public static Connection getConnection() {
if (conn == null){
loadDriver();
}
return conn;
}
public static void erroDB () {
conn = null;
}
}
tem um html que tem 4 campos text pra qunado eu clico no botao gravar ele chama o servlet
e da o seguinte erro na pagina
[code]
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
br.com.caelum.dao.ContatoDAO.adiciona(ContatoDAO.java:23)
br.com.caelum.servlet.AdicionaContatoServlet.service(AdicionaContatoServlet.java:59)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.26 logs.[/code]
e aparece um JDialog que eu fiz pra quando der problema na conexao com o banco
O que está acontecendo
Tem que conigurar o mysql junto com o apache no linux pra faze algo?
Atenciosamente