4
respostas

ROLLBACK NAO RETORNA

Boa tarde!

Meu código está igualzinho do professor, porém, na hora de executar ele não retorna o erro informando que o ROLLBACK foi executado

OBS : Eu já descomentei o trecho if(nome.equals("radio")) { throw new RuntimeException("Não foi possivel adicionar o produto"); }

    E mesmo assim ainda não funciona.
4 respostas

Julio, boa tarde. Você pode colocar o trecho do código aqui?

package modelo; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

public class TestaInsercaoComParametro {

public static void main(String[] args) throws SQLException {
    // criando a conexao

    ConnectionFactory factory = new ConnectionFactory();
    try (Connection connection = factory.recuperarConexao()) {
        connection.setAutoCommit(false); // Aqui eu estou falando que eu que vou controlar o momento da minha
                                            // transação

        try (PreparedStatement stm = connection.prepareStatement(
                "INSERT INTO produto (nome,descricao) VALUES (?,?)", Statement.RETURN_GENERATED_KEYS)) {

            adicionarVariavel("SmatTV", "60 Polegadas ", stm);
            adicionarVariavel("radio ", "radio de bateria ", stm);

            connection.commit();
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("ROLLBACK FOI EXECUTADO");
            connection.rollback();
        }
    }

}

private static void adicionarVariavel(String nome, String descricao, PreparedStatement stm) throws SQLException {
    stm.setString(1, nome);
    stm.setString(2, descricao);

    if (nome.equals("radio")) {
        throw new RuntimeException("Não foi possivel adicionar o produto");
    }

    stm.execute();

    try (ResultSet rst = stm.getGeneratedKeys()) {

        while (rst.next()) {
            Integer id = rst.getInt(1);
            System.out.println("id criado foi " + id);
        }
    }
}

}

ai está ...

Segui todos os seus passos na aula e o meu não funciona a ação de ROOLBACK

Julio, bom dia. Ele está adicionando os dois produtos? Não lança a exceção?