JDBC ( — соединение с базами данных на Java) — платформенно независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE.
JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL. Драйверы могут загружаться динамически (во время работы программы). Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL, содержащий протокол, за который драйвер отвечает.
История
Sun Microsystems выпустила JDBC как часть JDK 1.1 19 февраля 1997 года. С тех пор он является частью J2SE. Классы JDBC находятся в пакетах java.sql и javax.sql. Начиная с версии 3.1, JDBC разрабатывался в рамках Java Community Process (JCP), который включает в себя стандартизованные спецификации для Java-разработчиков.
Интерфейсы
JDBC API содержит два основных типа интерфейсов: первый – для разработчиков приложений и второй (более низкого уровня) – для разработчиков драйверов.
Соединение с базой данных описывается классом, реализующим интерфейс java.sql.Connection. Имея соединение с базой данных, можно создавать объекты типа Statement, служащие для исполнения запросов к базе данных на языке SQL.
Существуют следующие виды типов Statement, различающихся по назначению: java.sql.Statement — Statement общего назначения; java.sql.PreparedStatement — Statement, служащий для выполнения запросов, содержащих подставляемые параметры (обозначаются символом '?' в теле запроса); java.sql.CallableStatement — Statement, предназначенный для вызова хранимых процедур.
Интерфейс java.sql.ResultSet позволяет легко обрабатывать результаты запроса.
Преимущества
Преимуществами JDBC считают: Лёгкость разработки: разработчик может не знать специфики базы данных, с которой работает Код практически не меняется, если компания переходит на другую базу данных (количество изменений зависит исключительно от различий между диалектами SQL) Не нужно устанавливать громоздкую клиентскую программу К любой базе можно подсоединиться через легко описываемый 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"); Connection conn = null; try { 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"));
/** * stmt.close(); * При закрытии Statement автоматически закрываются * все связанные с ним открытые объекты ResultSet */ stmt.close();
catch (SQLException e) { e.printStackTrace(); } finally{ if (conn != null){ conn.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-программах Официальная страница JDBC Учебник JDBC
Категория:Java Enterprise Edition Категория:Интерфейсы доступа к данным Категория:Java API Категория:Запросы на спецификацию Java