Erro ao excluir

7 respostas
J

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.

7 Respostas

H

Na verdade o erro pode estar aqui :

CIDCODIGO = " + txtCodigo.getText();

altere para (com ') :

CIDCODIGO = '" + txtCodigo.getText() + "'";
J

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?

Pedrosa

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

J

Não entendi muito bem...

veja minha classe de conexao:

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);
		}
	}
}

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...

J

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:
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());
	}
}
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?

J

Pessoal, como se trata essa situação??
Tem um mais fácil de se fazer isso?

J

Pessoal alguem utiliza dessa forma ou alguma diferente??

Qualquer sugestao por favor…

Criado 31 de maio de 2006
Ultima resposta 1 de jun. de 2006
Respostas 7
Participantes 3