Questão nº 38
Questão de Programação · FCC TJ-CE 2022 (nº 38)
Considere o bloco de código, abaixo, presente um uma aplicação Java, em condições ideais.
```java
String driver, url, usuario, senha, sql;
Connection conecta;
PreparedStatement st;
driver = "com.mysql.cj.jdbc.Driver";
url = "jdbc:mysql://localhost:3306/bd";
usuario = "root";
senha = "aB12c56DY";
sql = "SELECT * FROM users WHERE usuario=? AND senha=?";
Class.forName(driver);
conecta = DriverManager.getConnection(url, usuario, senha);
st = conecta.prepareStatement(sql);
st.setString(1, txtUsuario.getText());
st.setString(2, pswSenha.getText());
```
Para executar o comando SQL SELECT na tabela `users` do banco de dados `bd` e armazenar o retorno em `rs` deve-se utilizar, na próxima linha do bloco de código, o comando
- A`RecordSet rs = st.executeSelect();`
- B`ResultSet rs = st.executeQuery();` (alternativa correta)
- C`ResultSet rs = st.execute();`
- D`ResultSet rs = st.executeSelect();`
- E`RecordSet rs = st.executeQuery();`
Resposta comentada
Gabarito Alternativa B
Para buscar dados de um banco de dados usando o comando SELECT em Java JDBC, você usa um objeto PreparedStatement e executa um método específico que retorna um ResultSet, que é como uma tabela de resultados.
- (A) Incorreta:
RecordSetnão é o nome da classe correta em JDBC; o correto éResultSet. Além disso,executeSelect()não é um método válido paraPreparedStatement. - (B) Correta:
ResultSeté a classe correta para armazenar os resultados de uma consulta, eexecuteQuery()é o método específico e direto para executar comandosSELECTem umPreparedStatement, retornando oResultSetcom os dados. - (C) Incorreta: A armadilha da banca aqui é que
execute()é um método genérico que pode executar qualquer tipo de comando SQL (SELECT, INSERT, UPDATE, DELETE). No entanto, ele retorna umbooleane exige chamadas adicionais comogetResultSet()para obter oResultSetde umSELECT. Para comandosSELECT,executeQuery()é o método mais direto e apropriado, pois já retorna oResultSetdiretamente. - (D) Incorreta: Embora
ResultSetseja o nome da classe correta,executeSelect()não é um método válido paraPreparedStatement. - (E) Incorreta:
RecordSetnão é o nome da classe correta em JDBC; o correto éResultSet.
Fonte: FCC TJ-CE 2022 Analista Judiciário - Especialidade Ciência da Computação - Área Sistemas da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.