Erro ao excluir

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…