Boa tarde!
Estou fazendo um programa de inserir, alterar e excluir dados num banco de dados usando Java, porém quando eu vou fazer o teste para excluir e alterar o dado do banco, quando o dado não existe ele aparece uma mensagem que o dado foi excluido/alterado com sucesso mas neste caso deveria dar erro pois o dado simplesmente não existe, dados que constam no banco ele exclui/altera normalmente.
segue código
EXCLUIR
public String excluiCliente(Cliente cliente) {
String resultado = "";
try {
Connection con = Conecta.getConexao();
String sql = "DELETE FROM dados WHERE codigo=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, cliente.getCodigo());
ps.execute();
ps.close();
con.close();
resultado = "OK";
} catch (Exception e) {
resultado = "ERRO: " + e.toString();
}
return resultado;
}
ALTERAR
public String alteraCliente(Cliente cliente) {
String resultado = "";
try {
Connection con = Conecta.getConexao();
String sql = "UPDATE dados SET descricao =? WHERE codigo=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, cliente.getCodigo());
ps.setString(2, cliente.getDescricao());
ps.execute();
ps.close();
con.close();
resultado = "OK";
} catch (Exception e) {
resultado = "ERRO: " + e.toString();
}
return resultado;
}
Agradeço a atenção
Continua com o mesmo problema
Isso acontece porque provavelmente a sua mensagem de confirmação de alteração/exclusão está dentro da sua view, e não em um controller.
Posta o código da sua view aí que fica mais fácil pra te dar uma resposta que te ajude a resolver o problema.
ALTERAR
private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ClienteDao alteraCliente = new ClienteDao();
String resul = alteraCliente.alteraCliente(montaCliente());
if(resul.equals("OK")){
lblMensagem.setText("ALTERADO COM SUCESSO");
}else{
lblMensagem.setText("ERRO");
}
}
EXCLUIR
private void btnExcluirActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
ClienteDao excluiCliente = new ClienteDao();
String resultado = excluiCliente.excluiCliente(montaCliente());
if (resultado.equals("OK")) {
lblMensagem.setText("EXCLUÍDO");
} else {
lblMensagem.setText("ERRO");
}
}
Caramba,
Você já fez debug no código pra ver passo a passo o que está ocorrendo ?
Eu aconselharia ao invés dos seus métodos retornarem String, retornar um booleano!
1 curtida
Fiz e ele sempre cai no “OK”, ele até exclui e altera, porém da que exclui e altera mesmo não excluindo ou alterando nada, rs.
Acho engraçado que o meu incluir da erro quando não inclui
Mas muito obrigada pela ajuda
Olá amiga,te aconselho a colocar seus métodos para retornarem um boolean.
1 curtida
sou amiga poxa! rsrsrs. Vou testar e caso de certo coloco aqui
Desculpe, vou me retratar, Olá amiga
Quanto ao seu problema como disse tente implementar seus métodos retornando boolean e observei que quando você passa a string de updade você seta ela ao contrario
String sql = "UPDATE dados SET descricao =? WHERE codigo=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, cliente.getDescricao());
ps.setInt(2, cliente.getCodigo());
Você seta primeiro a descrição e depois o código seguindo a orden da string.
Qualquer duvida post aqui novamente.
O método executeUpdate
ao realizar uma exclusão, vai retornar o total de registros manipulados, ou seja, excluídos. Em vez de dá erro devido ao fato de não existir o registro no banco, o método irá retornar 0 (zero).
Acredito que você deva ajustar sua lógica.