Oi Pessoal, tudo bem? (Desculpe-me pela falta ou erros de acento meu teclado esta bugado)
Sou novo por aqui e novo em programacao. Começando em Java.
Estudo sozinho e achei uma apostila inicial de Java Web. Sei que talvez nao seja o melhor caminho, mas tem me ajudado muito.
Minha duvida é numa alteracao na tabela Contato que náo funciona por causa de um objeto nulo (provavel que seja o ID) que nao consigo resolver. Alguem pode ajudar.
Caso consiga achar alguma resposta nas minhas tentativas eu posto aqui. Nao achei, ainda, um topico que me ajude aqui. (Um portal excelente diga-se de passagem - estou gostando muito e esta me ajudando a remover da cabeça que è impossivel aprender a programar depois de certa indade )
Erro:
Exception in thread "main" java.lang.NullPointerException
at br.com.aprendendojava.dao.ContatoDAO.alteraContato(ContatoDAO.java:151)
at br.com.aprendendojava.jdbc.teste.TestaEdicao.main(TestaEdicao.java:38)
Meu codigo.
…
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Scanner;
import br.com.aprendendojava.dao.ContatoDAO;
import br.com.aprendendojava.modelo.Contato;
public class TestaEdicao {
public static void main(String[] args) throws SQLException {
// TODO Auto-generated method stub
ContatoDAO dao = new ContatoDAO();
Scanner entrada = new Scanner(System.in);
SimpleDateFormat dataformatada = new SimpleDateFormat("dd/MM/yyyy");
int pessoa = entrada.nextInt();
List<Contato> contatos = dao.pesquisaID(pessoa);
for ( Contato contato : contatos) {
System.out.println("Nome: " + contato.getNome());
System.out.println("Email: " + contato.getEmail());
System.out.println("Endereço: " + contato.getEndereco());
System.out.println("Data de Nascimento: " + dataformatada.format(contato.getDataNascimento().getTime())
+ "\n");
}
Contato contato = new Contato();
String nome = entrada.next();
contato.setNome(nome);
dao.alteraContato(contato);
/*
* for ( Contato contato2 : contatos) { System.out.println("Nome: " +
* contato2.getNome()); System.out.println("Email: " + contato2.getEmail());
* System.out.println("Endereço: " + contato2.getEndereco());
* System.out.println("Data de Nascimento: " +
* dataformatada.format(contato.getDataNascimento().getTime()) + "\n"); }
*/
System.out.print("Resitro alterado com sucesso.");
entrada.close();
}
}
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import br.com.aprendendojava.jdbc.ConnectionFactory;
import br.com.aprendendojava.modelo.Contato;
public class ContatoDAO {
private Connection conexao;
public ContatoDAO() {
this.conexao = new ConnectionFactory().getConnection();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
public void Adiciona(Contato contato) throws SQLException {
// COMANDO SQL PARA INSERIR OS DADOS
String sql = "insert into contatos " +
"(nome,email,endereco,dataNascimento) " +
"values (?,?,?,?)";
try {
// CRIACAO DE UM STATEMENT PARA CAPTAR OS DADOS E INSERIR NA BD
PreparedStatement stmt = conexao.prepareStatement(sql);
// Preenche os valores a serem inseridos no banco (????)
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 (Exception e) {
// TODO: handle exception
System.out.print(e);
}
finally {
conexao.close();
}
}
public List<Contato> getLista() throws SQLException {
try {
PreparedStatement stmt = this.conexao
.prepareStatement("select * from contatos");
ResultSet rs = stmt.executeQuery();
List<Contato> contatos = new ArrayList<Contato>();
while (rs.next()) {
// criando o objeto Contato
Contato contato = new Contato();
contato.setNome(rs.getString("nome"));
contato.setEmail(rs.getString("email"));
contato.setEndereco(rs.getString("endereco"));
// montando a data através do Calendar
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
// adicionando o objeto à lista
contatos.add(contato);
}
rs.close();
stmt.close();
return contatos;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public List<Contato> pesquisaID(int id) throws SQLException{
try {
Contato contato = new Contato();
String sql = "Select * from contatos"
+ " where id = ?";
PreparedStatement stmt = this.conexao.prepareStatement(sql);
List<Contato> contatos = new ArrayList<Contato>();
stmt.setInt(1,id);
ResultSet resultado = stmt.executeQuery();
if(resultado.next()){
contato.setNome(resultado.getString("nome"));
contato.setEmail(resultado.getString("email"));
contato.setEndereco(resultado.getString("endereco"));
// montando a data através do Calendar
Calendar data = Calendar.getInstance();
data.setTime(resultado.getDate("dataNascimento"));
contato.setDataNascimento(data);
// adicionando o objeto à lista
contatos.add(contato);
}
return contatos;
}
catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
public void alteraContato(Contato contato) {
String sql = "update contatos set nome=?, email=?, endereco=?," +
"dataNascimento=? where id=?";
try {
PreparedStatement stmt = conexao.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.setLong(5, contato.getId());
stmt.execute();
stmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}