Questão nº 33
Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 33)
Considere `st` um objeto do tipo `PreparedStatement` e `conn` um objeto do tipo `Connection`, ambos em condições ideais para a execução do método `salvar`, de uma classe Java.
```java
public boolean salvar(Cliente cliente){
try {
st = conn.prepareStatement("
I
");
st.setString(1, cliente.getCpf());
st.setString(2, cliente.getNome());
st.setString(3, cliente.getEndereco());
st.setString(4, cliente.getBairro());
st.setString(5, cliente.getCidade());
st.setString(6, cliente.getTelefone());
st.setDouble(7, cliente.getRenda());
st.executeUpdate();
return true;
} catch (SQLException ex) {
return false;
}
}
```
Nas condições apresentadas, para que o método `salvar` grave as informações do cliente no banco de dados aberto, a lacuna `I` deve ser corretamente preenchida com a instrução
- A`INSERT INTO cliente VALUES(cpf,nome,endereco,bairro,cidade,telefone,renda)`
- B`INSERT INTO cliente VALUES(?,?,?,?,?,?,?)` (alternativa correta)
- C`INSERT INTO cliente (nome,cpf,endereco,bairro,cidade,telefone,renda) VALUES(?,?,?,?,?,?,?)`
- D`INSERT INTO cliente VALUES([cpf],[nome],[endereço],[bairro],[cidade],[telefone],[renda])`
- E`INSERT TO cliente (cpf,nome,endereco,bairro,cidade,telefone,renda) VALUES(?,?,?,?,?,?,?)`
Resposta comentada
Gabarito Alternativa B
Para inserir dados em um banco com PreparedStatement em JDBC, usamos marcadores de posição (ponto de interrogação ?) na instrução SQL para indicar onde os valores serão inseridos. Esses marcadores são preenchidos na ordem em que aparecem na instrução SQL, usando os métodos setX() do PreparedStatement.
- (A) Incorreta: Esta instrução tenta inserir os nomes das colunas (
cpf,nome, etc.) como se fossem os próprios valores, o que é um erro de sintaxe e lógica. - (B) Correta: Esta instrução usa
INSERT INTO cliente VALUES(...)para inserir dados em todas as colunas da tabelacliente, na ordem em que as colunas foram definidas na tabela. Os sete?são os marcadores de posição que correspondem aos sete métodosst.setX()chamados no código Java, garantindo que os valores do objetoclientesejam inseridos corretamente na ordem (CPF, Nome, Endereço, Bairro, Cidade, Telefone, Renda). - (C) Incorreta: Embora a sintaxe
INSERT INTO cliente (colunas) VALUES(?)seja válida, a ordem das colunas listadas (nome,cpf,...) não corresponde à ordem em que os valores estão sendo definidos pelos métodosst.setString(1, cliente.getCpf()),st.setString(2, cliente.getNome()), etc. O primeiro?seria preenchido com o CPF, mas a instrução SQL esperaria onomepara a primeira coluna listada. Essa é a armadilha mais comum, pois a ordem dos parâmetros é crucial. - (D) Incorreta: Os colchetes
[]não são o padrão SQL para marcadores de posição ou para delimitar valores literais em uma cláusulaVALUES. - (E) Incorreta: A palavra-chave correta para inserir dados é
INSERT INTO, nãoINSERT TO.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.