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();

Див. також Java Java Enterprise Edition SQL ODBC SQLJ

Посилання Офіційна сторінка JDBC Підручник JDBC Інструкції з JDBC Використання JDBC в Java Використовуємо Java Database Connectivity