Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Duvida sobre o Try()?

Eu entendo nos estarmos usando o primeiro try() por causa do fechamento da conexão ao banco, mas por que estamos usando este segundo Try()? se colocarmos o conteúdo do try entre as chaves {} faria o mesmo efeito?

public List<Produto> listar() throws SQLException {
        List<Produto> produtos = new ArrayList<>();
        String sql = "SELECT * FROM PRODUTO";

        try(PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
            preparedStatement.execute();

            try(ResultSet rst = preparedStatement.getResultSet()) {
                while(rst.next()) {
                    Produto produto =
                            new Produto(rst.getInt(1), rst.getString(2), rst.getString(3));

                    produtos.add(produto);
                }
            }
            return produtos;
        }
    }
2 respostas

Se você colocar o try entre as chaves, pode ocorrer de em caso de uma exceção o PreparedStatement não seja fechado, antigamente se usava uma estrutura try/catch/finally onde o que estava no finally sempre executava e você poderia fechar os itens lá, mas assim fica mais simples.

solução!

Decio, boa tarde. O segundo é para fechar o resultSet. Se vc colocasse entre as chaves, vc deveria chamar o rst.close explicitamente =)