Problema com query Delete

4 respostas
P

Bom dia pessoal!

Estou com uma dúvida, espero que possam me ajudar. Estou comk o seguinte codigo.

public void excluirPessoa(int codigo) throws PessoaDAOException {

		try{
			stm.executeQuery("Delete from Pessoa where Pessoa_Codigo =" + codigo);

			JOptionPane.showMessageDialog(null, "Registro excluido");

		}catch(Exception e){
			throw new PessoaDAOException(e.getMessage());
		}
	}

Acontece que este método faz a exlusão correta do registro, porém não aparece o JOptionPane e traz o seguinte erro.

[color=red]The statement did not return a result set.[/color]

Já tentei colocar um resulset recebendo o statement.

ResultSet rsEcluiPessoa = stm.executeQuery("Delete from Pessoa where Pessoa_Codigo =" + codigo);
			
			rsEcluiPessoa.next();

Mas dá o mesmo erro.

Sabem me dizaer por que?

Obrigado!

4 Respostas

nel

Bom dia.

Colocar resultset em um delete é besteira, concorda? Um delete não retorna nenhum tipo de registro, assim como um update.
Substitua o Statement por PreparedStatement e caso o erro persista, poste sua classe completa ok?

Abraços.

magnolohan
PedroAJunior:
Bom dia pessoal!

Estou com uma dúvida, espero que possam me ajudar. Estou comk o seguinte codigo.

public void excluirPessoa(int codigo) throws PessoaDAOException {

		try{
			stm.executeQuery("Delete from Pessoa where Pessoa_Codigo =" + codigo);

			JOptionPane.showMessageDialog(null, "Registro excluido");

		}catch(Exception e){
			throw new PessoaDAOException(e.getMessage());
		}
	}

Acontece que este método faz a exlusão correta do registro, porém não aparece o JOptionPane e traz o seguinte erro.

[color=red]The statement did not return a result set.[/color]

Já tentei colocar um resulset recebendo o statement.

ResultSet rsEcluiPessoa = stm.executeQuery("Delete from Pessoa where Pessoa_Codigo =" + codigo);
			
			rsEcluiPessoa.next();

Mas dá o mesmo erro.

Sabem me dizaer por que?

Obrigado!

--Tenta fazer assim:
public void excluirPessoa(int codigo)
    {
		try
		{
			stm.executeUpdate("Delete from Pessoa where Pessoa_Codigo = "+codigo+"");//se o parametro for texto adiciona aspas simples assim:  '"+codigo+"'
			JOptionPane.showMessageDialog(null, "Registro excluido");

		}catch(SQLException e){System.out.println(e);}
	}
GabrielCardelli

Recomendaria você a utilizar o PreparedStatement

String sql = “Delete from Pessoa where Pessoa_Codigo = ?”;

PreparedStatement pstm = con.preparedStatement(sql);

pstm.setInt(1,codigo);

pstm.executeQuery();

Abraço.

P

Utilizei a técnica do Magnolohan funcionou perfeito. Muito obrigado a todos! Problema resolvido.

Criado 14 de novembro de 2009
Ultima resposta 15 de nov. de 2009
Respostas 4
Participantes 4