Java JDBC

Технология JDBC (Java Database Connectivity — соединение с базами данных в среде Java) — платформенно-независимый промышленный стандарт взаимодействия Java приложений с различными СУБД.

JDBC основан на концепции драйверов, с помощью которых можно получить объект соединения с базой данных по специальным образом описанному URL. После этого приложение использует это соединение для выполнения всех необходимых операций с базой данных или данными.

В данном руководстве мы рассмотрим пошаговые примеры работы с различными СУБД с помощью таких JDBC объектов, как StatementPreparedStatementCallableStatement. Кроме этого будет показан способ работы с транзакциями через JDBC соединение, а также рассмотрен вопрос интеграции JDBC с другими фреймворками на примере Spring и JSF2.

Быстрый старт

Объект JDBC Statement

Объект типа Statement предназначен для выполнения запросов без параметров. При этом если требуется выполнить запрос типа createinsertupdate или delete, то есть запрос на изменение данных, то нужно использовать метод Statement.executeUpdate(sql), для запросов на получение данных (запросы типа select) нужно использовать метод Statement.executeQuery(sql). Если требуется выполнить запрос на изменение структуры базы данных, то нужно использовать метод Statement.execute(sql);

Объект JDBC PreparedStatement

Интерфейс PreparedStatement является расширением интерфейса Statement и добавляет возможность выполнения параметризованных запросов. По аналогии со Statement для выполнения операций получения данных необходимо пользоваться методом PreparedStatement.executeQuery(), для выполнения запросов на изменение данных — методом PreparedStatement.executeUpdate(), а для выполнения операций по изменению структуры базы данных (или таблиц) — методом PreparedStatement.execute().

Объект JDBC CallableStatement и хранимые процедуры

Хранимые процедуры и объект типа JDBC CallableStatement, примеры использования параметров типа IN, OUT и INOUT в СУБД MySQL.

  • Объекты типа JDBC CallableStatement — пример использования параметров IN.
  • Объекты типа JDBC CallableStatement — пример использования параметров OUT.
  • Объекты типа JDBC CallableStatement — пример использования параметров INOUT.

Пример использования объекта JDBC PreparedStatement — создание таблицы

Использование объекта типа PreparedStatement для создания и изменения таблиц базы данных ничем не отличается от использования объекта типа Statement. Разница состоит лишь в том, что указывать SQL запрос нужно не в момент его выполнения (то есть не передавать в качестве аргумента методу execute()), а в момент создания объекта типа PreparedStatement. Поскольку запросы такого типа нельзя параметризовать (в отличие, например, от ...

Читать далее »

Пример использования объекта JDBC PreparedStatement — создание записи

В некоторых случаях для выполнения запросов к реляционной базе данных удобнее использовать объект типа PreparedStatement, который отличается от более общих объектов типа Statement. В частности, если требуется выполнить несколько однотипных запросов, то использование PreparedStatement потребует меньше времени, чем в случае со Statement. Это связано с тем, что в момент обращения к базе данных он содержит в себе не просто SQL ...

Читать далее »

Пример использования объекта JDBC PreparedStatement — обновление записи

Об отличиях объектов типа PreparedStatement и Statement и о преимуществах первого мы говорили в предыдущей статье. В данной статье мы рассмотрим простой пример использования объекта типа PreparedStatement для выполнения операции обновления записи в таблице базы данных. package ru.j4web.examples.java.jdbc.jdbcpreparedstatementupdateexample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class JDBCPreparedStatementUpdateExample {     private static final String DB_URL ...

Читать далее »

Пример использования объекта JDBC PreparedStatement — получение списка записей

Объект типа PreparedStatement может использоваться не только для выполнения операций создания, обновления и удаления записей в таблице базы данных, но также и для получения списка записей с заданием условий поиска. В данной статье мы рассмотрим пример такой программы. Для выполнения запроса на получение данных применяется метод executeQuery(). package ru.j4web.examples.java.jdbc.jdbcpreparedstatementselectexample; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import ...

Читать далее »

Пример использования объекта JDBC PreparedStatement — удаление записи

Для выполнения операции удаления записи из таблицы с помощью объекта типа PreparedStatement используется метод executeUpdate(). Ниже показан пример такого действия. package ru.j4web.examples.java.jdbc.jdbcpreparedstatementdeleteexample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class JDBCPreparedStatementDeleteExample {     private static final String DB_URL = "jdbc:mysql://dev-server/sampledb"             + "?user=sampleuser&password=samplepassword";     private static final String SQL_STATEMENT = "DELETE FROM users WHERE ...

Читать далее »

Пример использования объекта JDBC Statement — получение списка записей

Статья показывает пример получения списка записей из таблицы базы данных средствами объекта типа JDBC Statement с последующем отображением его с помощью объекта типа ResultSet. Объект типа ResultSet содержит в себе результат выполнения запроса (то есть набор записей, каждая из которых состоит из набора полей с данными) и предоставляет интерфейс для перебора всех записей и получения значения полей записи. Для тестового ...

Читать далее »

Пример использования объекта JDBC PreparedStatement — пакетное обновление

При необходимости выполнить множество однотипных запросов к базе данных использование технологии пакетного обновления данных будет хорошей идеей. Общий механизм выглядит следующим образом: Мы формируем множество запросов, которые хотим выполнить. При этом после каждого запроса необходимо вызвать метод addBatch(), который фиксирует очередной запрос в последовательности. Мы выполняем все ранее добавленные запросы «пачкой» с помощью вызова метода executeBatch(). Конечно, мы могли бы ...

Читать далее »

Пример использования объекта JDBC Statement — пакетное обновление

Объект типа JDBC Statement позволяет выполнять пакетное обновление данных. Это может быть актуальным в случае, например, необходимости вставки большого числа данных в таблицу при выполнении импорта из внешнего источника. Общий механизм работы с пакетным обновлением данных выглядит следующим образом: Сообщаем объекту типа Connection, что выполнять автоматический commit не требуется. Получаем объект типа Statement. Накидываем операции обновления в объект типа Statement. ...

Читать далее »

Пример использования объекта JDBC Statement — удаление записи

Рассмотрим пример того, как с помощью объекта типа JDBC Statement выполнять запросы на изменение данных, а именного — запросы на удаление строк в таблице. Для этого возьмем базу данных MySQL и таблицу users, созданную в этом примере. package ru.j4web.examples.java.jdbc.jdbcstatementdeleteexample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Logger; public class JDBCStatementDeleteExample {     private static final String ...

Читать далее »

Пример использования объекта JDBC Statement — обновление записи

В статье показывается пример использования объекта типа JDBC Statement для выполнения запроса изменения данных — обновления записи в таблице. В качестве тестового окружения мы будем использовать СУБД MySQL, базу данных sampledb, таблицу users, созданную в этом примере, и запись для пользователя с user_id равным 1, созданную в этом примере. package ru.j4web.examples.java.jdbc.jdbcstatementupdateexample; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import ...

Читать далее »