Boa tarde galera...esou com um probleminha aqui que não parece ser tão complexo, mas nao to conseguindo resolver...é o seguinte.:
No meu método de cadastrar da Regra de Negocio, tem um execção que verifica se o cliente ja existe, caso exista ele lança a exeçção, mas mesmo assim, o cara existindo no banco de dados ele aparece em Tempo de execução ja JTable, ai sempre que fecho e abro a aplicação ele some, a duvida é..por que ele aparece na JTable mesmo depois da validação??????
MÉTODO
publicvoidcadastrarContato(Stringnome,Stringidade,Stringtelefone)throwsSQLException{Stringval="Anderson";if(nome==val){JOptionPane.showMessageDialog(null,"Cliente ja cadastrado no Banco de Dados");//ESSA ESCEÇÃO QUE ERA PRA SER LANÇADO CASO O NOME DIGITADO FOSSE ANDERSON}elseif(nome!=val){Contatocont=newContato(nome,idade,telefone);contatoDAOcDAO=newcontatoDAO();cDAO.inserir(cont);}}
BOTAO CADASTRAR
private void bt_cadastrarActionPerformed(java.awt.event.ActionEvent evt) {
if((evt.getSource() == bt_cadastrar) && (verificarDados())){
ContatoNegocio cont = new ContatoNegocio();
ContatoTableModel modelo = (ContatoTableModel)tabela.getModel();
contatoDAO dao = new contatoDAO();
// Contato Criado para utilizar no tablemodel, para que ele
// possa indentificar o novo contato
Contato contato = new Contato(tf_nome.getText() , tf_idade.getText() , tf_telefone.getText());
try {
cont.cadastrarContato(contato.getNome(),contato.getIdade(),contato.getTelefone());
int num = dao.buscaID(contato.getNome());
contato.setIdusuario(num);
modelo.add(contato);
} catch (SQLException ex) {
Logger.getLogger(ContatoFrame.class.getName()).log(Level.SEVERE, null, ex);
}
limparCampos();
}
}
Ola Anderson, a reposta para a sua pergunta esta nesse trecho de código:
cont.cadastrarContato(contato.getNome(),contato.getIdade(),contato.getTelefone());
int num = dao.buscaID(contato.getNome());
contato.setIdusuario(num);
modelo.add(contato);
Você tenta inserir um contato e verifica se ele existe até ai tudo bem, mas o problema é que se ele existir você simplesmente mostra uma mensagem e continua a execução por isso mesmo ele existindo no banco você o adiciona no seu TableModel.
Você deveria lançar uma exception ou executar algum tratamento para que a execução não continue e ele não adicione o contato no seu tabelmodel.
Acho que é isso
A
Anderson_S
Certo…Mas eu lançei a execção no controller vc reparou???
lá é o mais certo não??? e como implementa essa sua sugestão???
WendersonLP
publicvoidcadastrarContato(Stringnome,Stringidade,Stringtelefone)throwsSQLException{Stringval="Anderson";if(nome.equals(val)){//ESSA É UMA MANEIRAnewthrowSQLException("Cliente ja cadastrado no Banco de Dados");}elseif(nome!=val){Contatocont=newContato(nome,idade,telefone);contatoDAOcDAO=newcontatoDAO();cDAO.inserir(cont);}}
lina
Anderson S.:
Certo…Mas eu lançei a execção no controller vc reparou???
lá é o mais certo não??? e como implementa essa sua sugestão???
Oi,
Para comparação entre String, utiliza-se equals e não ==
Só modifique isso em seu IF.
Tchauzin!
A
Anderson_S
Certo lina, ele faz a comparação perfeitamente, mas ele insere no modelo o dado comparadado caso ele ja esteja cadastrado…ai uando fecho e abro a aplicação ele nao está lá…mas enquanto nao fecho ele continua lá…esse é o problema…
A
Anderson_S
WendersonLP:
public void cadastrarContato(String nome , String idade , String telefone) throws SQLException
{
String val = "Anderson";
if (nome.equals(val))
{
//ESSA É UMA MANEIRA
new throw SQLException("Cliente ja cadastrado no Banco de Dados");
}
else if(nome != val)
{
Contato cont = new Contato(nome,idade,telefone);
contatoDAO cDAO = new contatoDAO();
cDAO.inserir(cont);
}
}
Essa sua solução nao deu certo…ta pedindo pra mim criar o método SQLException…