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 (англ.)
- Підручник JDBC (англ.)
- Інструкції з JDBC (рос.)
- Використання JDBC в Java (рос.)
- Використовуємо Java Database Connectivity