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","4321","admin");
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");
}
}
}
}
public class Contato {
private Long id;
private String nome;
private String email;
private String endereco;
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 setEndereco(String endereco) {
this.endereco = endereco;
}
public String getEndereco() {
return endereco;
}
public void setEmail(String email) {
this.email = email;
}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class ContatoDAO {
//a conexão com o banco de dados
private Connection c;
//construtor faz a conexao
ContatoDAO(){
//Passo 1
try {
//Pede a fabrica uma instancia da conexao
c = FabricaDeConexoes.pegaConexao();
} catch (RuntimeException e) {
System.out.println("Nao conseguiu pegar a conexao " + e);
}
}
public void adiciona(Contato a) throws SQLException{
PreparedStatement p;
String s;
//Passo 2
s = "insert into contatos (nome,email,endereco) values (?,?,?)";
try{
//Passo 3
p = c.prepareStatement(s);
p.setString(1, a.getNome());
p.setString(2, a.getEmail());
p.setString(3, a.getEndereco());
//Passo 4
p.execute();
p.close();
} catch (RuntimeException e) {
System.out.println("Nao conseguiu inserir o contato " + e);
// OBS.: Aparece essa mensagem ( Não conseguiu inserir o contato java.lang.NullPointerException).
Fiz algumas alterações sugeridas mais ficou na mesma, acho que não entendi o que deve ser
feito. Será que alguém pode implementar está parte do código para eu entender como faz.
No aguardo, obrigado.
}
}
}
import java.sql.SQLException;
public class PopularContato {
public static void main(String[] args) throws SQLException {
//instacia o JavaBean
Contato a = new Contato();
//Popular o objeto a
a.setNome("charles");
a.setEmail("charles@hotmail.com");
a.setEndereco("R. Pastor Antônio Polito 3256 cj56");
//grave nessa conexão
ContatoDAO adao = new ContatoDAO();
//método elegante
adao.adiciona(a);
System.out.println("Gravado!");
}
}
p = c.prepareStatement(s);
p.setString(1, a.getNome());
p.setString(2, a.getEmail());
p.setString(3, a.getEndereco());
Uma destas variáveis está nula (ou c ou p ou a).
Detalhe: Você deve criar variáveis com nomes coerentes ao objeto que será utilizado.
p, c, a não são variáveis facilmente identificáveis. Podemm representar uma infinidade de coisas.
Ah, o stackTrace diz em que linha o NullPointerException ocorre.
Pode verificar e, se tiver dúvidas, poste aqui o stackTrace também.
C está nulo.
Você só não terá C = null quando instanciar a classe ContatoDAO.
Colocou para abrir a conexão dentro do construtor da classe, então a conexão só será aberta quando fizer um new ContatoDAO().
[quote=drsmachado]
p = c.prepareStatement(s);
p.setString(1, a.getNome());
p.setString(2, a.getEmail());
p.setString(3, a.getEndereco());
Uma destas variáveis está nula (ou c ou p ou a).
Detalhe: Você deve criar variáveis com nomes coerentes ao objeto que será utilizado.
p, c, a não são variáveis facilmente identificáveis. Podemm representar uma infinidade de coisas.
Ah, o stackTrace diz em que linha o NullPointerException ocorre.
Pode verificar e, se tiver dúvidas, poste aqui o stackTrace também.[/quote]
Olhar o stackTrace de erro e ver onde a mensagem é disparada, nada né?