Olá pessoal, estou desenvolvendo uma agenda em Java, utilizando 3 camadas. Estou com um problema e não to conseguindo indetificar o erro… Eu quero alterar os dados do contato e assim que clicar em Atualizar, quero que altere… mas o que está acontecendo é que estou adicionando um novo contato. :oops:
Persistencia:
public void atualizar(Contato contato) throws ClassNotFoundException, SQLException{
String sql = "UPDATE contato SET nome=?, telefone=?, celular=?, endereco=?, bairro=?, cidade=?, datanasc=?, email=?, observacao=?, idcategoria? where idcontato=?";
PreparedStatement ps = getPreparedStatement(sql);
ps.setString(1, contato.getNome());
ps.setString(2, contato.getTelefone());
ps.setString(3, contato.getCelular());
ps.setString(4, contato.getEndereco());
ps.setString(5, contato.getBairro());
ps.setString(6, contato.getCidade());
ps.setString(7, contato.getDatanasc());
ps.setString(8, contato.getEmail());
ps.setString(9, contato.getObservacao());
ps.setInt(10, contato.getIdcategoria());
ps.setInt(11, contato.getIdContato());
ps.execute();
ps.close();
}
Negócio:
public class NContato {
public int validarDados(List<Object> dadosContato) throws ClassNotFoundException, SQLException{
if (dadosContato.get(1).equals(""))
return 1;
if (!"".equals(dadosContato.get(7))){
if (verificaData((String) dadosContato.get(7)) == false)
return 7;
}
return 0;
}
public void cadastrarDadosAtualizados(List<Object> dadosContato) throws ClassNotFoundException, SQLException{
Contato contato = new Contato();
contato.setNome((String) dadosContato.get(1));
contato.setTelefone((String) dadosContato.get(2));
contato.setCelular((String) dadosContato.get(3));
contato.setEndereco((String) dadosContato.get(4));
contato.setBairro((String) dadosContato.get(5));
contato.setCidade((String) dadosContato.get(6));
contato.setDatanasc((String) dadosContato.get(7));
contato.setEmail((String) dadosContato.get(8));
contato.setObservacao((String) dadosContato.get(9));
if ((Integer)dadosContato.get(10) > 0){
contato.setIdcategoria((Integer) dadosContato.get(10));
contato.setIdContato((Integer)dadosContato.get(11));
}
ContatoDAO contatoDao = new ContatoDAO();
contatoDao.atualizar(contato);
}
Interface:
private void btnPegaDadosActionPerformed(java.awt.event.ActionEvent evt) {
int id = 0;
List<Contato> lista = new LinkedList<Contato>();
try {
if(jTxtID.getText().length()!=0)
id = Integer.parseInt(jTxtID.getText());
NContato ngcContato = new NContato();
try {
lista = ngcContato.buscarPorCateg(id);
try{
tNome.setText(lista.get(0).getNome());
tTelefone.setText(lista.get(0).getTelefone());
tCelular.setText(lista.get(0).getCelular());
tEndereco.setText(lista.get(0).getEndereco());
tCidade.setText(lista.get(0).getCidade());
tDataNasc.setText(lista.get(0).getDatanasc());
tEmail.setText(lista.get(0).getEmail());
tObservacao.setText(lista.get(0).getObservacao());
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Contato com este ID não existe" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
}
} catch (ClassNotFoundException ex) {
Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
}
}catch(NumberFormatException ex){
JOptionPane.showMessageDialog(null, "Esse Campo só aceita números" ,"Informação",JOptionPane.INFORMATION_MESSAGE);
jTxtID.grabFocus();
}
private void btnAtualizaDadosActionPerformed(java.awt.event.ActionEvent evt) {
List<Object> dadosContato = new LinkedList<Object>();
dadosContato.add(0,"");
dadosContato.add(1,tNome.getText());
dadosContato.add(2,tTelefone.getText());
dadosContato.add(3,tCelular.getText());
dadosContato.add(4,tEndereco.getText());
dadosContato.add(5,tBairro.getText());
dadosContato.add(6,tCidade.getText());
dadosContato.add(7,tDataNasc.getText());
dadosContato.add(8,tEmail.getText());
dadosContato.add(9,tObservacao.getText());
if (cbCategoria.getSelectedIndex() == 0){
dadosContato.add(10,0);
dadosContato.add(11, jTxtID.getText());
}
else{
Categoria cat = new Categoria();
cat = (Categoria) cbCategoria.getSelectedItem();
dadosContato.add(10,cat.getIdcategoria());
}
NContato ngcContato = new NContato();
// Verifica os dados inseridos e retorna o codigo erro
int opcao = 0;
try {
opcao = ngcContato.validarDados(dadosContato);
} catch (ClassNotFoundException ex) {
Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
}
if (opcao == 1){
JOptionPane.showMessageDialog(this, "Campo nome não pode ser vazio!", "Erro de validação", JOptionPane.ERROR_MESSAGE);
tNome.requestFocus();
}
if (opcao == 7){
JOptionPane.showMessageDialog(this, "Data Invalida!", "Erro de validação", JOptionPane.ERROR_MESSAGE);
tDataNasc.requestFocus();
}
if (opcao != 0)
JOptionPane.showMessageDialog(this, "Erro ao gravar os dados!", "Erro de validação", JOptionPane.ERROR_MESSAGE);
else
try {
ngcContato.cadastrarContato(dadosContato);
} catch (ClassNotFoundException ex) {
Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(FAltContato.class.getName()).log(Level.SEVERE, null, ex);
}
JOptionPane.showMessageDialog(this, "Atualizado com Sucesso!", "Atualização finalizada", JOptionPane.INFORMATION_MESSAGE);
}