Erro no delete! help

6 respostas
TASF

boa noite galera estou com um problema no meu delete quando executo ele me da esse erro no console

java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910)
	at com.mysql.jdbc.Statement.checkForDml(Statement.java:409)
	at com.mysql.jdbc.Statement.executeQuery(Statement.java:1111)
	at materialDAO.MatDao.remover_materialtiagoalves(MatDao.java:128)
	at materialBO.MatBo.remover_materialtiagoalves(MatBo.java:28)
	at materialFACADE.MatFacade.remover_materialtiagoalves(MatFacade.java:24)
	at materialCONTROLE.MatControle.main(MatControle.java:41)
Exception in thread "main" java.lang.NullPointerException
	at materialDAO.MatDao.remover_materialtiagoalves(MatDao.java:139)
	at materialBO.MatBo.remover_materialtiagoalves(MatBo.java:28)
	at materialFACADE.MatFacade.remover_materialtiagoalves(MatFacade.java:24)
	at materialCONTROLE.MatControle.main(MatControle.java:41)

segue o metodos

dao

public MatModelo remover_materialtiagoalves(int cdMat){
		Connection 			conexao = null;
		ResultSet			rs 		= null;
		Statement 			stmt	= null;
		
		MatModelo modelo= new MatModelo();
		
		try {
			conexao = obterConexao();
			stmt = conexao.createStatement();
			rs = stmt.executeQuery("delete * from ltp.materialtiagoalves where cdMat  = "+cdMat);
			 

				
				
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			
			try {
				rs.close();
				stmt.close();
				conexao.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return modelo;
	}

controle

mmodelo=new MatModelo();
	
	mmodelo= mfacade.remover_materialtiagoalves(3);

facade

public MatModelo remover_materialtiagoalves(int cdMat){
		
		return mbo.remover_materialtiagoalves(cdMat);
	}

bo

public MatModelo remover_materialtiagoalves(int cdMat){
	
	return mdao.remover_materialtiagoalves(cdMat);
}

6 Respostas

S

No método “remover_materialtiagoalves” coloque no Try como está abaixo:

try {  
        conexao = obterConexao();  
        stmt = conexao.createStatement();  
        stmt.executeUpdate("delete * from ltp.materialtiagoalves where cdMat  = "+cdMat);  
}

O método que você está utilizando executeQuery retorna um ResultSet, ele é utilizado para SELECT onde você quer percorrer os registros retornados. Quando você vai utilizar um UPDATE, DELETE ou INSERT o recomendado é usar o método executeUpdate().
Testa ae pra ver se funciona.

Abraço

D

Ao invés de usar o executeQuery(), troca pelo executeUpdate()

CristianPalmaSola10

E tem mais uma amigao reparei que no seu comando sql voce passou “delete * from …”

mas o correto é “delete from …”

no comando delete não se usa o coringa

CristianPalmaSola10

Voce naum precisa trocar nenhum metodo, o que voce precisa para executar o delete pode ser o executeQuery vai funciona

naum funcionou pelo motivo que de disse nos post anterior comando delete naum usa coringa, tire o * e ja ta fungando

D

CristianPalmaSola10:
Voce naum precisa trocar nenhum metodo, o que voce precisa para executar o delete pode ser o executeQuery vai funciona

naum funcionou pelo motivo que de disse nos post anterior comando delete naum usa coringa, tire o * e ja ta fungando

Mas o executeQuery(), retorna um resultSet, que nesse caso não existe não é?
Tanto que o erro

Can not issue data manipulation statements with executeQuery().
fala isso, o certo é ele usar o executeUpdate().

CristianPalmaSola10

pode ser o executeUpdate mas sem ele tira o * dele tambem naum vai funciona

Criado 2 de dezembro de 2011
Ultima resposta 3 de dez. de 2011
Respostas 6
Participantes 4