Middle
Como é que a classe ResultSet está estruturada em Java?
sobes.tech IA
Resposta da IA
ResultSet é uma interface no pacote java.sql, que representa os resultados da execução de uma consulta SQL. Fornece acesso aos dados passo a passo (linha por linha).
Aspectos principais:
- Cursor:
ResultSetsuporta um cursor que aponta para a linha de dados atual. Inicialmente, o cursor está antes da primeira linha. - Navegação: Para mover o cursor, usam-se métodos como
next(),previous(),first(),last().next()devolvetruese o cursor moveu com sucesso para a próxima linha, efalsese atingiu o final do resultado. - Tipos: Existem diferentes tipos de
ResultSetcom várias capacidades de navegação e atualização de dados:TYPE_FORWARD_ONLY: O cursor move-se apenas para frente (mais eficiente).TYPE_SCROLL_INSENSITIVE: O cursor pode mover-se em qualquer direção, alterações na base de dados não são refletidas.TYPE_SCROLL_SENSITIVE: O cursor pode mover-se em qualquer direção, alterações na base de dados são refletidas (pode ser mais lento).
- Concurrência: Define se os dados podem ser modificados através de
ResultSet:CONCUR_READ_ONLY: Apenas leitura.CONCUR_UPDATABLE: Leitura e escrita.
- Obtenção de dados: Os dados da linha atual são extraídos usando métodos como
get<Type>(), por exemplo,getString(int columnIndex),getInt(String columnLabel),getDate(int columnIndex). - Fecho: É importante fechar o
ResultSetapós uso para libertar recursos, usando o métodoclose(). Normalmente, isto é feito num blocofinallyou com try-with-resources.
Exemplo de uso:
// Assume-se que connection e statement já estão inicializados
try (ResultSet resultSet = statement.executeQuery("SELECT id, name FROM users")) {
while (resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
System.out.println("ID do utilizador: " + id + ", Nome: " + name);
}
} catch (SQLException e) {
e.printStackTrace();
}
ResultSet não armazena todos os dados na memória ao mesmo tempo, o que o torna eficiente ao trabalhar com grandes volumes de dados.