Então @Lucas_Camara , fiz o debug, e encontrei o seguinte
o valor do stm está desta forma:
e o valor do ccm(Cadastro Cliente Modelo) está desta forma:
Então @Lucas_Camara , fiz o debug, e encontrei o seguinte
o valor do stm está desta forma:
e o valor do ccm(Cadastro Cliente Modelo) está desta forma:
Parece que o problema é nesse CadastroClienteModelo
mesmo. O que seria essa classe? Como ela é criada?
Pelo menos o DAO está correto agora.
package br.com.fjsistemas.controle;
import br.com.fjsistemas.dao.CadastroClienteDAO;
import br.com.fjsistemas.interfaces.InterfaceControle;
import br.com.fjsistemas.modelo.CadastroClienteModelo;
public class CadastroClienteControle implements InterfaceControle {
CadastroClienteModelo ccm = new CadastroClienteModelo();
CadastroClienteDAO ccd = new CadastroClienteDAO();
@Override
public void salvarControle(Object... valor) {
if("".equals(valor[0])) {
ccm.setId((int) 0);
}else {
ccm.setId((int) valor[0]);
}
ccm.setTxtClienteNome((String) valor[1]);
ccm.setComboBoxClienteSexo((String) valor[2]);
ccm.setFormatterTxtDataNascimento((String) valor[3]);
ccm.setTxtFormatterClienteCPF((String) valor[4]);
ccm.setTxtFormatterClienteRG((String) valor[5]);
ccm.setTxtClienteEndereco((String) valor[6]);
ccm.setTxtClienteNumero((String) valor[7]);
ccm.setTxtClienteBairro((String) valor[8]);
ccm.setTxtFormatterClienteCEP((String) valor[9]);
ccm.setTxtClienteCidade((String) valor[10]);
ccm.setComboBoxClienteEstado((String) valor[11]);
ccm.setTxtFormatterTelefone((String) valor[12]);
ccm.setTxtFormatterClienteCelular((String) valor[13]);
ccm.setTxtClienteEmail((String) valor[14]);
ccd.salvarDAO(ccm);
}
@Override
public void excluirControle(int id) {
// TODO Auto-generated method stub
}
@Override
public void carregarComboBox() {
// TODO Auto-generated method stub
}
}
@Lucas_Camara a classe controle apenas recebe as informações da classe visão e repassa as informações para as classes modelo e dao
E a ordem dos itens recebidos por esse varargs (Object... valor
) está correta com a ordem dos set
s?
Confesso pra vc que não sei ver isto…
É soh rodar em debug e inspecionar o parâmetro valor, que é o array com os valores.
Pelo que vejo, claramente os valores estão errados, o que não entendo é…pq eles estão errados se foram declarados na mesma ordem? Pq o nome está correto e somente os demais campos não estão?
Se vc imprimir no console o valor de valor[1], o que aparece?
o nome é o unico correto
Imaginei.
Então vc deve corrigir os sets de acordo com a ordem dos valores vindos do parâmetro valor. Porém, devo avisá-lo que é muito perigoso vc ficar passando parâmetros dessa forma. Usar Object
é muito perigoso e pode causar erros inesperados no sistema. O melhor seria se vc já recuperasse os dados usando o tipo correto.
Pode me ensinar como fazer isto?
Simples. Se o valor 0 do parâmetro for o nome, vc faz:
ccm.setTxtClienteNome((String) valor[0]);
Se o nome for o valor 3, o set vai ficar assim:
ccm.setTxtClienteNome((String) valor[3]);