Problema não consegui inserir contato no banco

2 respostas
C
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class FabricaDeConexoes {
    static Connection c = null;//inicia desconectado
    
    public static Connection pegaConexao() throws RuntimeException {
      if(c==null){
         try{
           c = DriverManager.getConnection("jdbc:mysql://localhost:3306/fj21","root","1234");
           System.out.println("conectou");
         }
         catch(SQLException e){
             System.out.println("Nao conseguiu conectar");
             throw new RuntimeException(e);
         }
      }
      return c;
    
    }
    
    
    public static void fechaConexao(){
       if(c!=null){
          try{
           c.close();
          }
          catch(SQLException e){
             System.out.println("Nao conseguiu fechar conexao");
         }
       }
    }
    
}
import java.util.Calendar;

public class Contato {
	
	private int id;
	private String nome;
	private String email;
	private String endereco;
	private Calendar dataNascimento;
	
	public int getId() {
		return id;
	}
	public void setId(int 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) {
		this.dataNascimento = dataNascimento;
	}
	

}
public class ContatoDAO {
    
    private Connection c;
      
    //construtor faz a conexao
    public ContatoDAO(){
        //Passo 1
        try {
            //Pede a fabrica uma instancia da conexao
            c = ContatoDAO.pegaConexao();
        } catch (RuntimeException e) {
            System.out.println("Nao conseguiu pegar a conexao " + e);
        }
    }
    
    private static Connection pegaConexao() {
		// TODO Auto-generated method stub
		return null;
	}

	public void adiciona(Contato a) throws SQLException{
        
        PreparedStatement p;
        String s;

        //Passo 2 
        s = "insert into aluno (id,nome,email,endereco) values (?,?,?)";

        try{
          //Passo 3
          p = c.prepareStatement(s);
          p.setLong(1, a.getId());
          p.setString(2, a.getNome());
          p.setString(3, a.getEmail());
          p.setString(4, a.getEndereco());

          //Passo 4
          p.execute();
          p.close();
          
        } catch (RuntimeException e) {
           System.out.println("Nao conseguiu inserir o contato " + e);
        }
     
    }
    
}
public class ExJavaMySQL {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws SQLException {
            //instacia o JavaBean
            Contato a = new Contato();
            
            //Popular o objeto a
            a.setId(11);
            a.setNome("Antonio");
            a.setEmail("[email removido]");
            a.setEndereco("R. Pastor Antônio Pólito, 1555");
            
            ContatoDAO aDAO = new ContatoDAO();
            
            aDAO.adiciona(a);
   }
}
OBS.: Quando mando executar aparece essa msg: Não conseguiu inserir o contato [b]java.lang.NullPointerException[/b]
             Será que alguém pode me ajudar a resolver este problema me mostrando como faz, pois faz tempo que venho    
             tentando e não estou conseguindo. No aguardo. Eternamente grato.

2 Respostas

drsmachado
s = "insert into aluno (id,nome,email,endereco) values (?,?,?)";   
  
        try{   
          //Passo 3   
          p = c.prepareStatement(s);   
          p.setLong(1, a.getId());   
          p.setString(2, a.getNome());   
          p.setString(3, a.getEmail());   
          p.setString(4, a.getEndereco());

Quantas interrgações existem na query e quantos parâmetros você passa?

A

Tenho a impressão de ser outra coisa… Neste trecho você tenta obter a conexão:

# //Pede a fabrica uma instancia da conexao  
#             c = ContatoDAO.pegaConexao();

Mas o método pegaConexao() está retornando null… não é mesmo??

# private static Connection pegaConexao() {  
#         // TODO Auto-generated method stub  
#         return null;  
#     }

Então você tenta chamar um método de um objeto que está nulo…

# //Passo 3  
#           p = c.prepareStatement(s);

Por isso que dá NullPointerException.

Criado 4 de novembro de 2011
Ultima resposta 4 de nov. de 2011
Respostas 2
Participantes 3