Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2024

Banco de DadosConsultas e Comandos em SQL
Código
vu212098
Banca
VUNESP
Órgão
EsFCEx
Ano
2024
Cargo
CFO/QC ( )
Para acessar um banco de dados com o JDBC pode-se utilizar o objeto PreparedStatement, que permite criar instruções SQL compiladas. Durante a criação deste objeto é possível utilizar um símbolo na query SQL para representar valores que serão futuramente atribuídos como parte da consulta do banco de dados. Um exemplo é apresentado a seguir:   PreparedStatement p = connection.prepareStatement("UPDATE FUNCIONARIOS SET CARGO = SÍMBOLO WHERE ID = SÍMBOLO");   Assinale a alternativa que apresenta o símbolo correto, representado pela palavra SÍMBOLO no exemplo acima.
  1. A!
  2. B?
  3. C#
  4. D$
  5. E&
Revelar gabarito e comentário

GabaritoB — ?

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: o símbolo de parâmetro no PreparedStatement

Gabarito: letra B. No JDBC, o objeto PreparedStatement utiliza o símbolo ? (ponto de interrogação) como marcador de posição (placeholder) para valores que serão atribuídos posteriormente na instrução SQL. No exemplo, UPDATE FUNCIONARIOS SET CARGO = ? WHERE ID = ?, cada ? representa um parâmetro que será preenchido com os métodos setString(), setInt(), etc.

O PreparedStatement é uma interface do pacote java.sql que representa uma instrução SQL pré-compilada. A grande vantagem é que a instrução é compilada uma única vez pelo SGBD e pode ser executada múltiplas vezes com diferentes valores, melhorando a performance e, principalmente, prevenindo ataques de SQL Injection, pois os valores são tratados como dados e não como parte do comando SQL.

A sintaxe básica de criação é:

PreparedStatement p = connection.prepareStatement("UPDATE FUNCIONARIOS SET CARGO = ? WHERE ID = ?");
p.setString(1, "Gerente"); // define o primeiro parâmetro (CARGO)
p.setInt(2, 123);         // define o segundo parâmetro (ID)
p.executeUpdate();

Os parâmetros são indexados a partir de 1, na ordem em que aparecem na string SQL. O símbolo ? é o único marcador de parâmetro aceito pelo JDBC — não há alternativa com !, #, $ ou &.

PEGA ESSA DICA!

Na prova, lembre-se: ? é o curinga do PreparedStatement. Se a questão falar em "parâmetros", "placeholders" ou "valores a serem atribuídos", a resposta quase sempre será ?. Os outros símbolos (!, #, $, &) não têm função de marcador no JDBC — $ pode aparecer em outras linguagens (como PHP), mas não aqui.

Alternativa A — ❌ Incorreta

O símbolo ! não é utilizado como marcador de parâmetro no JDBC. Ele pode aparecer em outras linguagens como operador de negação, mas não tem relação com PreparedStatement.

Alternativa B — ✅ Correta ⟵ GABARITO

O ? é o marcador de posição padrão do JDBC. Ele indica onde um valor será inserido na instrução SQL, e cada ? corresponde a um parâmetro que deve ser definido com os métodos setXxx() antes da execução.

Alternativa C — ❌ Incorreta

O símbolo # não é usado no JDBC. Em alguns SGBDs, # pode ter outros significados (como prefixo de tabela temporária no SQL Server), mas não como placeholder de PreparedStatement.

Alternativa D — ❌ Incorreta

O $ não é marcador de parâmetro no JDBC. Em outras tecnologias, como PHP com PDO, o $ é usado para variáveis, mas não no contexto de PreparedStatement do Java.

Alternativa E — ❌ Incorreta

O & não é utilizado como placeholder no JDBC. Em algumas ferramentas (como SQL*Plus do Oracle), & pode ser usado para variáveis de substituição, mas não é o caso do PreparedStatement.

Gabarito: letra B — o símbolo correto é o ?.

Link permanente: /questoes/vu212098