Sobes.tech
Junior

Akú úlohu zohráva objekt ResultSet pri práci s databázami pomocou JDBC?

sobes.tech AI

Odpoveď od AI

Objekt ResultSet predstavuje tabuľkové zobrazenie údajov získaných ako výsledok vykonania SQL dotazu. Umožňuje iterovať cez riadky tohto výsledku a získavať hodnoty stĺpcov pre každý riadok.

Hlavné funkcie:

  • Prístup k údajom: Umožňuje získavať hodnoty z polí (stĺpcov) aktuálneho riadku pomocou rôznych metód get<TypDáta>() (napríklad getInt(), getString(), getDate()).
  • Iterácia: Poskytuje metódy na pohyb po riadkoch výsledku (next(), previous(), first(), last(), absolute()).
  • Informácie o metadátach: Prostredníctvom metódy getMetaData() je možné získať ResultSetMetaData — objekt poskytujúci informácie o štruktúre ResultSet, ako je počet stĺpcov, ich typy, názvy a pod.
  • Aktualizácia údajov: V závislosti od typu ResultSet a možností ovládača môže podporovať metódy na aktualizáciu, vloženie alebo odstránenie riadkov priamo v výsledku dotazu (napríklad updateRow(), insertRow(), deleteRow()).

Životný cyklus:

  1. ResultSet je vytvorený po vykonaní SQL dotazu objektom Statement alebo PreparedStatement.
  2. Naň sa odkazuje na spracovanie údajov.
  3. Po ukončení práce by mal byť ResultSet zatvorený, aby sa uvoľnili zdroje databázy. To je možné urobiť explicitne metódou close() alebo použitím try-with-resources.
// Príklad použitia ResultSet
import java.sql.*;

public class ResultSetExample {

    public static void main(String[] args) {
        String dbUrl = "jdbc:mysql://localhost:3306/mydatabase"; // URL databázy
        String user = "myuser"; // Používateľ databázy
        String password = "mypassword"; // Heslo používateľa

        String sql = "SELECT id, name, age FROM employees"; // Príklad SQL SELECT dotazu

        try (Connection conn = DriverManager.getConnection(dbUrl, user, password); // Nadviazanie spojenia
             Statement stmt = conn.createStatement(); // Vytvorenie objektu Statement
             ResultSet rs = stmt.executeQuery(sql)) { // Vykonanie dotazu a získanie ResultSet

            // Iterácia cez riadky ResultSet
            while (rs.next()) {
                int id = rs.getInt("id"); // Získanie hodnoty z stĺpca "id"
                String name = rs.getString("name"); // Získanie hodnoty z stĺpca "name"
                int age = rs.getInt("age"); // Získanie hodnoty z stĺpca "age"

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age); // Výpis údajov
            }

        } catch (SQLException e) {
            e.printStackTrace(); // Spracovanie chýb
        }
    }
}