Java Database Connectivity

Java DataBase Connectivity (англ. Java DataBase Connectivity — з'єднання з базами даних на Java), скорочено JDBC) — прикладний програмний інтерфейс Java, який визначає методи, з допомогою яких програмне забезпечення на Java здійснює доступ до бази даних. JDBC — це платформо-незалежний промисловий стандарт взаємодії Java-застосунків з різноманітними СУБД, реалізований у вигляді пакета java.sql, що входить до складу Java SE.

В основі JDBC лежить концепція так званих драйверів, що дозволяють отримувати з'єднання з базою даних по спеціально описаному URL. Драйвери можуть завантажуватись динамічно (під час роботи програми). Завантажившись, драйвер сам реєструє себе й викликається автоматично, коли програма вимагає URL, що містить протокол, за який драйвер «відповідає».

Інтерфейси

JDBC API містить два основні типи інтерфейсів: перший — для розробників застосунків і другий (нижчого рівня) — для розробників драйверів.

З'єднання з базою даних описується класом, що реалізує інтерфейс java.sql.Connection.

Маючи з'єднання з базою даних, можна створювати об'єкти типу Statement, використовувані для здійснення запитів до бази даних на мові SQL.

Існують такі види типів Statement, що відрізняються своїм призначенням:

  • java.sql.Statement — Statement загального призначення;
  • java.sql.PreparedStatement — Statement, що служить для здійснення запитів, котрі містять підставні параметри (позначаються символом '?' у тілі запиту);
  • java.sql.CallableStatement — Statement, призначений для виклику збережених процедур.

Класjava.sql.ResultSet дозволяє легко обробляти результати запитів.

Переваги

Перевагами JDBC вважаються:

  • Легкість розробки: розробник може не знати специфіки бази даних, з якою працює;
  • Код не змінюється, якщо компанія переходить на іншу базу даних;
  • Не треба встановлювати громіздку клієнтську програму;
  • До будь-якої бази можна під'єднатись через легко описуваний URL.

Приклади

Приклад коду

JDBC для MySQL
Цей приклад використовує вільний драйвер JDBC для MySQL, який легко встановлюється в більшості дистрибутивів Linux через стандартні репозиторії.
package javaapplication1;
import java.sql.*;

public class Main {

    public static void main(String[] args) throws SQLException
    {
        /**
        * цей рядок вказує драйвер DB.
        * розкоментуйте, якщо прописуєте драйвер вручну
        */

        //Class.forName("com.mysql.jdbc.Driver").newInstance();

        Connection conn = DriverManager.getConnection(
            "jdbc:mysql://localhost:3306/db_name",
            "user", "password");
        
        if (conn==null)
        {
            System.out.println("Немає з'єднання з БД!");
            System.exit(0);
        }
        
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM users");

        while(rs.next())
        {
            System.out.println(rs.getRow() + ". " + rs.getString("firstname") + "\t" + rs.getString("lastname"));
        }
        
        // if(rs!=null)rs.close();
        
        /**
         * stmt.close();
         * При закритті Statement автоматично закриваються
         * всі пов'язані з ним відкриті об'єкти ResultSet
         */
        
        // if(stmt!=null)stmt.close();
        stmt.close();
    }
}
JDBC для Microsoft SQL Server
Цей приклад використовує jTDS, вільний драйвер JDBC для Microsoft SQL Server і Sybase ASE SQL-Server. Підключитись до цієї та інших СУБД можна і вбудованими засобами за допомогою драйвера JDBC для ODBC, але ціною сповільнення роботи.
/**
 * цей рядок вказує альтернативний драйвер DB. Наприклад, hsql.
 */

// Class.forName("org.hsqldb.jdbcDriver");


Connection conn = DriverManager.getConnection(
    "jdbc:jtds:sqlserver://SERVER/Northwind;instance=INST;domain=Sample_NTLM_Domain",
    "user", "password");

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT LastName + ' ' + FirstName AS FullName, Address FROM Employees");

while(rs.next())
{
    System.out.println(rs.getString("FullName") + "\t" + rs.getString("Address"));
}

rs.close();
stmt.close();

Див. також

Посилання

  • Офіційна сторінка JDBC [Архівовано 23 жовтня 2010 у Wayback Machine.] (англ.)
  • Підручник JDBC [Архівовано 26 серпня 2009 у Wayback Machine.] (англ.)
  • Інструкції з JDBC (рос.)
  • Використання JDBC в Java [Архівовано 8 серпня 2010 у Wayback Machine.] (рос.)
  • Використовуємо Java Database Connectivity [Архівовано 2 квітня 2015 у Wayback Machine.]
  • п
  • о
  • р
Типи
Поняття
Об'єкти
Складові
Функції
Пов'язані теми
Ця стаття потребує додаткових посилань на джерела для поліпшення її перевірності. Будь ласка, допоможіть удосконалити цю статтю, додавши посилання на надійні (авторитетні) джерела. Зверніться на сторінку обговорення за поясненнями та допоможіть виправити недоліки.
Матеріал без джерел може бути піддано сумніву та вилучено.
(січень 2016)
Бази даних Це незавершена стаття про бази даних.
Ви можете допомогти проєкту, виправивши або дописавши її.