Sobes.tech
Junior

Iš kokių komponentų sudarytas JDBC?

sobes.tech AI

Atsakymas iš AI

JDBC (Java Database Connectivity) sudaro šie pagrindiniai komponentai:

  • JDBC API: Java parašytas sąsajų ir klasių rinkinys, kuris suteikia standartinį būdą sąveikauti su įvairiomis duomenų bazėmis. Šis API naudojamas kūrėjų kodui rašyti:
  • JDBC Driver Manager: Klasė, valdanti įvairius JDBC tvarkyklės. Ji atsakinga už tvarkyklės įkėlimą ir tvarkyklės egzempliorių teikimą, kad būtų galima užmegzti ryšį su duomenų baze:
  • JDBC Driver: Programinė įranga, įgyvendinanti JDBC API sąsajas konkrečiai duomenų bazės valdymo sistemai (DBVS). Yra įvairių JDBC tvarkyklės tipų:
    • Type 1 (JDBC-ODBC tilto tvarkyklė): Konvertuoja JDBC iškvietimus į ODBC iškvietimus. Reikalauja ODBC tvarkyklės įdiegimo kliento pusėje. Pasenusi:
    • Type 2 (Native-API tvarkyklė): Konvertuoja JDBC iškvietimus į natūralų API iškvietimus. Reikalauja kliento pusėje įdiegti natūralų kodą:
    • Type 3 (Tinklo protokolo tvarkyklė): Naudoja tarpinį serverį, kuris verčia JDBC iškvietimus į duomenų bazės protokolą. Nereikalauja įdiegti natūralaus kodo kliento pusėje:
    • Type 4 (Pure Java tvarkyklė): Parašyta visiškai Java ir tiesiogiai verčia JDBC iškvietimus į duomenų bazės protokolą. Dažniausiai naudojamas:
  • Java taikymas: Java parašyta programa, kuri naudoja JDBC API prisijungti prie duomenų bazės ir vykdyti operacijas (DML, DDL):

Komponentų sąveika vyksta taip:

  1. Java taikymas naudoja JDBC API iškviesti metodus:
  2. Iškvietimai perduodami į JDBC Driver Manager:
  3. Driver Manager suranda ir įkelia tinkamą JDBC tvarkyklę nurodytai duomenų bazei:
  4. JDBC tvarkyklė tiesiogiai sąveikauja su duomenų baze, naudodama jos protokolą arba natūralų API (priklausomai nuo tvarkyklės tipo):
  5. Rezultatai arba klaidų informacija grąžinama per tvarkyklę, Driver Manager ir JDBC API atgal į Java taikymą:
// JDBC API naudojimo pavyzdys Java taikymo programoje
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;

public class JdbcExample {

    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {
            // Tvarkyklės įkėlimas (šiuolaikinėse Java versijose nebūtina)
            // Class.forName("com.mysql.cj.jdbc.Driver");

            // Prisijungimas per Driver Manager
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mydatabase", // Duomenų bazės URL
                    "username", // Vartotojo vardas
                    "password" // Slaptažodis
            );

            // Sukurti Statement vykdyti SQL užklausas
            statement = connection.createStatement();

            // Vykdyti SELECT užklausą
            resultSet = statement.executeQuery("SELECT id, name FROM mytable");

            // Apdoroti rezultatus
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // Uždaryti išteklius
            try {
                if (resultSet != null) resultSet.close();
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}