Questão nº 42
Questão de Engenharia de Software · FCC TST 2017 (nº 42)
Considere o fragmento de código abaixo, de uma classe em uma aplicação Java SE ideal.
```java
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/tst", "oper01", "a456B7F");
PreparedStatement st = conn.prepareStatement("DELETE FROM colaborador WHERE matricula = ?");
st.setInt(1, 10016);
```
Para executar o comando DELETE da linguagem SQL a próxima instrução do fragmento de código deverá ser
- A`conn.st.execute();`
- B`st.executeUpdate();` (alternativa correta)
- C`conn.execute(st);`
- D`int r = st.executeDelete();`
- E`st.executeQuery();`
Resposta comentada
Gabarito Alternativa B
No JDBC, para interagir com um banco de dados, usamos um objeto PreparedStatement para enviar comandos SQL. A escolha do método para executar esse comando depende do tipo de operação SQL que você está realizando: se é uma consulta que retorna dados (SELECT) ou uma modificação que altera o estado do banco (INSERT, UPDATE, DELETE).
- (A) Incorreta:
sté um objetoPreparedStatement, não um campo daConnection. A sintaxeconn.st.execute()está incorreta. - (B) Correta: O método
executeUpdate()é o padrão para executar comandos SQL que modificam o banco de dados, comoINSERT,UPDATEeDELETE. Ele retorna umintindicando o número de linhas afetadas pela operação. - (C) Incorreta: O método
execute()daConnectiongeralmente recebe umaStringSQL diretamente, não um objetoPreparedStatement. A execução doPreparedStatementé feita através de seus próprios métodos. - (D) Incorreta:
executeDelete()não é um método padrão da API JDBC paraPreparedStatement. - (E) Incorreta:
executeQuery()é usado exclusivamente para comandosSELECTque retornam um conjunto de resultados (ResultSet). Usá-lo para umDELETEresultaria em uma exceção, poisDELETEnão retorna dados, apenas modifica o banco. Armadilha: EmboraDELETEseja uma "execução" de um comando, o termo "Query" emexecuteQueryse refere especificamente a "consultar" dados, o que não é o caso de umDELETE.
Fonte: FCC TST 2017 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.