Pular para o conteúdo principal

Questão de Programação — JDBC — FUNDATEC 2026

ProgramaçãoJDBC
Código
qg685902
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Banco de Dados
Um desenvolvedor Java está implementando um módulo de relatórios para um sistema escolar. Ele precisa consultar todos os alunos de um determinado curso no banco de dados MySQL e exibir os resultados em tela. Para isso, escreve o seguinte trecho de código:Imagem associada para resolução da questãoPara que o código funcione corretamente, recuperando os registros da tabela e permitindo a iteração sobre os resultados, assinale a alternativa que preenche, correta e respectivamente, as lacunas do trecho acima.
  1. AResultSet e executeUpdate(), pois esse método é utilizado para executar qualquer instrução SQL que produza um conjunto de resultados iterável, sendo o mais adequado para consultas que retornam múltiplas linhas de uma tabela.
  2. BResultSet e executeBatch(), pois esse método permite agrupar múltiplas instruções SQL em lote e retorna um ResultSet consolidado com todos os registros recuperados pelas instruções executadas em conjunto.
  3. CResultSet e execute(), pois esse método é o único do JDBC capaz de retornar um objeto ResultSet diretamente, sendo obrigatório seu uso em qualquer consulta SQL que produza resultados iteráveis em Java.
  4. DResultSet e executeResult(), pois esse método foi introduzido no JDBC para substituir o executeQuery() em versões modernas do Java, retornando um ResultSet tipado e mais eficiente para consultas com grande volume de dados.
  5. EResultSet e executeQuery(), pois esse método executa instruções SQL de consulta e retorna um objeto ResultSet contendo as tuplas recuperadas, permitindo a iteração pelos resultados por meio do método next().
Revelar gabarito e comentário

GabaritoE — ResultSet e executeQuery(), pois esse método executa instruções SQL de consulta e retorna um objeto ResultSet contendo as tuplas recuperadas, permitindo a iteração pelos resultados por meio do método next().

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

JDBC: executeQuery() e ResultSet

Gabarito: letra E. Para consultas SQL que retornam múltiplas linhas (como a busca de todos os alunos de um curso), o método correto é executeQuery(), que retorna um objeto ResultSet contendo as tuplas recuperadas, permitindo a iteração com next(). Os demais métodos (executeUpdate(), executeBatch(), execute(), executeResult()) não são adequados para essa finalidade, pois ou não retornam um ResultSet ou não são métodos reais da API JDBC.

O JDBC (Java Database Connectivity) é a API padrão do Java para acesso a bancos de dados relacionais. Ela fornece um conjunto de interfaces e classes que permitem ao desenvolvedor conectar-se a um banco, enviar instruções SQL e processar os resultados. O fluxo típico de uma operação de consulta envolve: (1) obter uma conexão via DriverManager.getConnection(), (2) criar um Statement ou PreparedStatement com a instrução SQL, (3) executar a consulta e (4) processar o ResultSet retornado.

O ResultSet é a interface que representa o conjunto de resultados de uma consulta. Ele funciona como uma tabela virtual, com linhas e colunas, e é percorrido sequencialmente por meio do método next(), que move o cursor para a próxima linha e retorna true se houver uma linha válida. Dentro do loop, os valores de cada coluna são acessados por métodos como getString(), getInt(), getDouble(), entre outros, que recebem o índice ou o nome da coluna.

A escolha do método de execução é crucial: executeQuery() é o único método da interface Statement (e suas subclasses) projetado especificamente para instruções SELECT, retornando um ResultSet. Já executeUpdate() é usado para instruções que modificam dados (INSERT, UPDATE, DELETE, DDL), retornando um int com o número de linhas afetadas. O método execute() é genérico e pode retornar true se houver um ResultSet ou false caso contrário, exigindo tratamento adicional. executeBatch() é para executar um lote de instruções e retorna um array de int com os resultados de cada comando. Não existe um método executeResult() na API JDBC.

A pegadinha desta questão está em confundir os métodos de execução do JDBC, especialmente executeQuery() com executeUpdate() ou execute(). O candidato que não domina a distinção entre consulta (SELECT) e atualização (INSERT/UPDATE/DELETE) tende a escolher uma alternativa incorreta. A banca explora exatamente essa confusão, apresentando justificativas plausíveis para métodos que não se aplicam ao contexto de uma consulta que retorna múltiplas linhas.

Guarde a fronteira: se a instrução SQL é uma consulta (SELECT), o método é executeQuery() e o retorno é um ResultSet; se é uma atualização (INSERT, UPDATE, DELETE), o método é executeUpdate() e o retorno é um int. É nessa distinção que as alternativas se dividem.

1executeQuery()
Consulta (SELECT)
Retorna ResultSet
Itera com next()
2executeUpdate()
INSERT/UPDATE/DELETE/DDL
Retorna int (linhas afetadas)
3execute()
Genérico
Retorna boolean
ResultSet via getResultSet()
4executeBatch()
Lote de instruções
Retorna int[]
5executeResult()
Não existe na API
Métodos de execução JDBC
LEVELsoulevel.com.br
Métodos de execução JDBC: executeQuery() (Consulta (SELECT), Retorna ResultSet, Itera com next()); executeUpdate() (INSERT/UPDATE/DELETE/DDL, Retorna int (linhas afetadas)); execute() (Genérico, Retorna boolean, ResultSet via getResultSet()); executeBatch() (Lote de instruções, Retorna int[]); executeResult() (Não existe na API)

Alternativa A — ❌ Incorreta

O erro está em afirmar que executeUpdate() é utilizado para "qualquer instrução SQL que produza um conjunto de resultados iterável". Na verdade, executeUpdate() é destinado a instruções que modificam o banco de dados (INSERT, UPDATE, DELETE, DDL) e retorna um int com o número de linhas afetadas, não um ResultSet. Para consultas SELECT, o método correto é executeQuery().

Alternativa B — ❌ Incorreta

executeBatch() é usado para executar um lote de instruções SQL de uma só vez, retornando um array de int com os resultados de cada comando. Ele não retorna um ResultSet consolidado, e não é adequado para uma consulta simples que retorna múltiplas linhas. A descrição da alternativa é completamente equivocada quanto ao funcionamento do método.

Alternativa C — ❌ Incorreta

A afirmação de que execute() é "o único método do JDBC capaz de retornar um objeto ResultSet diretamente" é falsa. O método execute() é genérico: ele retorna true se a instrução produziu um ResultSet (que deve ser obtido com getResultSet()) ou false se produziu uma contagem de atualização. Ele não é o único método, nem é obrigatório para consultas. O método específico e mais direto para consultas é executeQuery().

Alternativa D — ❌ Incorreta

Não existe um método chamado executeResult() na API JDBC. A alternativa inventa um método inexistente, atribuindo-lhe características fictícias como "substituir o executeQuery() em versões modernas do Java". Isso é pura invenção, sem qualquer fundamento na documentação oficial do JDBC.

Alternativa E — ✅ Correta ⟵ GABARITO

executeQuery() é o método da interface Statement (e PreparedStatement) projetado especificamente para executar instruções SQL de consulta (SELECT). Ele retorna um objeto ResultSet contendo as tuplas recuperadas, que podem ser iteradas com o método next(). Essa é exatamente a necessidade do desenvolvedor no enunciado: consultar todos os alunos de um curso e exibir os resultados.

PEGA ESSA DICA!

Para fixar, lembre-se da tríade: executeQuery()ResultSet (consulta); executeUpdate()int (atualização); execute()boolean (genérico). Quando a instrução é um SELECT, a escolha é sempre executeQuery().

Gabarito: letra E

Link permanente: /questoes/qg685902