Pessoal,
To com um erro q sei o que é mas não consigo resolver. Deve ser coisa simples que to errando…
Veja o erro:
aparece quando tento executar exclusao
public void excluir() {
String sql = "DELETE FROM CIDADE WHERE CIDCODIGO = " + txtCodigo.getText();
try
{
query = Conexao.Query(sql, 2);
}
catch(Exception err)
{
JOptionPane.showMessageDialog(null, "Erro ao excluir : " + err.getMessage());
}
}
Sei que o erro ta aqui:
So gostaria de saber porque nao ta pegando o valor do jtextfield se ele tem valor…
Valeu
Julio.
Na verdade o erro pode estar aqui :
CIDCODIGO = " + txtCodigo.getText();
altere para (com ') :
CIDCODIGO = '" + txtCodigo.getText() + "'";
Obrigado por responder…
resolveu nao, apareceu outro:
java.sql.SQLException: conversion error from string ""
So uma duvida
Esse classe que tem o metodo de excluir é chamada a partir de outra classe, entao no main nao instancie, pode ser isso?
Use PreparedStatement e não se preocupe com as malditas aspas, o driver faz esse trabalho sujo por vc.
sql = "DELETE FROM CIDADE WHERE CIDCODIGO = ?;
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setInt(1,txtCodigo.getText());
Na interregogação ele pega o que vc setou, no caso de um codigo setInt
Não entendi muito bem…
veja minha classe de conexao:
[code]class Conexao
{
public static ResultSet Query(String sentenca, int opcao)
{
try
{
ResultSet rs = null ;
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”).newInstance();
Connection con = DriverManager.getConnection(“jdbc:odbc:PROOS”,“SYSDBA”,“masterkey”);
Statement stmt = con.createStatement();
if (opcao == 1)
rs = (stmt.executeQuery(sentenca));
if (opcao == 2)
{
stmt.executeUpdate(sentenca);
rs = (stmt.getResultSet());
}
return rs;
}
catch(Exception e)
{
System.out.println(e);
return (null);
}
}
}[/code]
o que tem de errado com ela??
o que ta acontecendo é que o txtCodigo.getText() nao te pegando o valor do campo…
se mando mostrar ele nao tem nada apesar do campo propriamente dito ter o valor…
Veja a situação:
tenho uma classe abstrata padrao que tem o metodo:
public abstract void excluir();
Nessa mesma classe chamo esse metodo dentro do evento de um botao:
if (Evento == btnExcluir){
excluir();
}
entao em uma subclasse que herda dessa classe padrao implemento esse metodo excluir assim:
[code]public void excluir() {
String sql = "DELETE FROM CIDADE WHERE CIDCODIGO = " + txtCodigo.getText();
try
{
query = Conexao.Query(sql, 2);
JOptionPane.showMessageDialog(null,"Registro excluído com sucesso!");
}
catch(Exception err)
{
JOptionPane.showMessageDialog(null, "Erro ao excluir: " + err.getMessage());
}
}[/code]
Minha classe conexao ja enviei no post acima…
O valor do campo pode estar se perdendo?? Esse é o jeito certo de se fazer o que tentei fazer?
Pessoal, como se trata essa situação??
Tem um mais fácil de se fazer isso?
Pessoal alguem utiliza dessa forma ou alguma diferente??
Qualquer sugestao por favor…