Sobes.tech
Junior

Qual é o papel do objeto ResultSet ao trabalhar com bancos de dados usando JDBC?

sobes.tech IA

Resposta da IA

O objeto ResultSet representa uma visualização tabular dos dados obtidos como resultado da execução de uma consulta SQL. Permite iterar sobre as linhas deste resultado e obter os valores das colunas para cada linha.

Funções principais:

  • Acesso aos dados: Permite obter os valores dos campos (colunas) da linha atual usando vários métodos get<tipoDeDados>() (por exemplo, getInt(), getString(), getDate()).
  • Iteração: Fornece métodos para navegar pelas linhas do resultado (next(), previous(), first(), last(), absolute()).
  • Informação sobre metadados: Através do método getMetaData(), pode-se obter ResultSetMetaData, um objeto que fornece informações sobre a estrutura do ResultSet, como o número de colunas, seus tipos, nomes, etc.
  • Atualização de dados: Dependendo do tipo de ResultSet e das capacidades do driver, pode suportar métodos para atualizar, inserir ou eliminar linhas diretamente no resultado da consulta (por exemplo, updateRow(), insertRow(), deleteRow()).

Ciclo de vida:

  1. ResultSet é criado após a execução de uma consulta SQL por um objeto Statement ou PreparedStatement.
  2. É utilizado para processar os dados.
  3. Após terminar, o ResultSet deve ser fechado para liberar recursos da base de dados. Isso pode ser feito explicitamente com o método close() ou usando try-with-resources.
// Exemplo de uso de ResultSet
import java.sql.*;

public class ResultSetExample {

    public static void main(String[] args) {
        String dbUrl = "jdbc:mysql://localhost:3306/mydatabase"; // URL do banco de dados
        String user = "myuser"; // Utilizador do banco de dados
        String password = "mypassword"; // Palavra-passe do utilizador

        String sql = "SELECT id, name, age FROM employees"; // Exemplo de consulta SQL SELECT

        try (Connection conn = DriverManager.getConnection(dbUrl, user, password); // Estabelecer ligação
             Statement stmt = conn.createStatement(); // Criar objeto Statement
             ResultSet rs = stmt.executeQuery(sql)) { // Executar consulta e obter ResultSet

            // Iterar pelas linhas do ResultSet
            while (rs.next()) {
                int id = rs.getInt("id"); // Obter valor da coluna "id"
                String name = rs.getString("name"); // Obter valor da coluna "name"
                int age = rs.getInt("age"); // Obter valor da coluna "age"

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age); // Exibir dados
            }

        } catch (SQLException e) {
            e.printStackTrace(); // Gerir erros
        }
    }
}