Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2024
- Código
- vu212098
- Banca
- VUNESP
- Órgão
- EsFCEx
- Ano
- 2024
- Cargo
- CFO/QC ( )
- A!
- B?
- C#
- D$
- E&
GabaritoB — ?
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 &.
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.
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.
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.
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.
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.
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