PreparedStatement - Será que posso fazer dessa forma

Socorro…
A partir do resultado de um select quero fazer três update em tabelas diferentes. Abaixo como está montado a classe.public void excluiPerguntaEResposta(int idPerguntaResp)
throws SQLException, CadastroException {

	try {
		//Busca id_pergunta_resp na tabela repositorio_pergunta_resp (seleciona pergunta que estão excluidas)
		PreparedStatement pstmt = connection.prepareStatement("select id_pergunta_resp from repositorio_pergunta_resp where cd_conteudo = ?");
		String id = "P-"+idPerguntaResp;
		pstmt.setString(1, id);
		ResultSet IdPegResp = pstmt.executeQuery(); 
		while (IdPegResp.next()) {
			//update na tabela pergunta_resp setando o status para 6 (marca como excluída)
    		PreparedStatement pstmt1 = connection.prepareStatement("update pergunta_resp set id_status = 6 where id_pergunta_resp = ?");
    		pstmt1.setString(1, idPR);
    		ResultSet UpdateWk = pstmt1.executeQuery();
    		pstmt1.close();
    		
			//update na tabela pergunta_resp setando o status para 6 (marca como excluída)
    		PreparedStatement pstmt2 = connection.prepareStatement("update repositorio_pergunta_resp set id_status = '6' where id_pergunta_resp = ?");
    		pstmt2.setString(1, idPR);
    		ResultSet UpdateRep = pstmt2.executeQuery();
    		pstmt2.close(); 
    		
			//Busca id_no na tabela no_rep_pergunta_resp (verifica se existe pergunta excluída associada ao tópico)
    		PreparedStatement pstmt3 = connection.prepareStatement("select id_no from no_rep_pergunta_resp where id_pergunta_resp = ?");
    		pstmt3.setString(1, idPR);
    		ResultSet buscaNo = pstmt3.executeQuery();
    		while (buscaNo.next()){
        		String idNo = buscaNo.getString("id_no");
        	update na tabela st_no setando o status para 1 (republica tópico)
        		PreparedStatement pstmt4 = connection.prepareStatement("update no set st_no = 1 where id_no = ?");
        		pstmt4.setString(1, idNo);
        		ResultSet UpdateNo = pstmt4.executeQuery();
        		pstmt4.close();
    			pstmt3.close();
         	}   
    		pstmt.close();
		}
	}catch(Exception e){
		System.out.println(e.getMessage());
	}
	finally {
		connection.commit();
	}
}

Putz cara…
Identa esse seu código… senão fica difícil de ler… :slight_smile:

Olha, eu também não tive saco de ler esse código da forma que você pois ele ai, vc tem que tentar deixar ele mais facil até para vc mecher depois, as aplicações crescem e ai o bixo pega, tirando que o progrador que chegar e ver o código assim em uma empresa vai queimar o antigo programador.
Bem, eu tive um dia um problema com isso e vi que é bom criar um Statement e um resultset para cada conecção dessas, com certeza fazendo assim não tem problema mas dependendo do que vc for fazer pode também não dar problema usando o mesmo. caso queira que alguem leia esse código coloque ele de forma facil de faze-lo. Espero ter ajudado.

Vou anexar o arquivo - acho que fica mais fácil

JavaAdri bom coloca o codigo entre
[ code ]

aki coloque o codigo

[/code]

Antes de postar clique em VISUALIZAÇÃO e de uma olhada
Como ficou blz…

A… no primeiro cochetes tire o espaco(coloquei os espaços so pra aparecer o code entendeu…)

Qual o erro que você está tendo?

De qualquer forma, seu código está com um erro, a instrução

pstmt3.close(); tem que estar fora do while…

Abraço,

Armando