Работаем с базами данных в Java (на примере Microsoft SQL Server)

Практически ни одно серьёзное современное приложение не обходится без баз данных. Поэтому на сегодняшний день практически все основные языки программирования поддерживают работу с ними. Java не исключение.

Рассмотрим работу с базами данных в Java на примере Microsoft SQL Server.

В Java для доступа к базам данных используется технология JDBC. Это платформенно-независимый стандарт, который поддерживает большинство современных СУБД.

Работа с базами данных с помощью JDBC строится по следующему алгоритму:

  1. Подключение к проекту библиотеки с драйвером;
  2. Подключение к базе данных;
  3. Собственно работа с базой данных посредством SQL запросов.
Подключение драйвера СУБД к проекту

Драйвер СУБД для JDBC, если он не входит в состав JDK, как правило, можно скачать с официального веб ресурса её разработчика. В частности, JDBC драйвер для Microsoft SQL Server можно скачать здесь.

Драйвер СУБД представляет собой обычный jar файл. Его подключение к проекту ничем не отличается от подключения любой другой библиотеки.

Подключение приложения к базе данных

Вначале требуется сформировать строку подключения. Для Microsoft SQL Server она имеет следующий вид.

Рассмотрим подробнее шаблон строки подключения (переменная connectionUrl). Он начинается с двух ключевых параметров отделённых друг от друга и остальной части строки подключения двоеточиями:

  • Стандарт подключения к базе данных (jdbc);
  • Идентификатор драйвера (в данном случае sqlserver).

После идентификатора драйвера следует описание параметров подключения в соответствии с требованиями той или иной конкретной СУБД.

При работе с серверами баз данных очень важно правильно указать, к какому из них необходимо подключиться. Правильный формат указания зависит от конкретной СУБД.

В случае Microsoft SQL Server имя сервера необходимо указывать в формате имя_хоста\имя_экземпляра. Например: ServerDB\SQLSERVER_1. При этом не играет роли, откуда осуществляется подключение, локально с самого хоста или по сети.

На это необходимо обратить особе внимание, так как даже в статье на TechNet строка подключения приведена с ошибкой. По крайней мере, с новым драйвером, который поддерживает последние версии Microsoft SQL Server и Java, приведённая в ней строка подключения по факту не работает.

После формирования строки подключения следует зарегистрировать драйвер СУБД.

Для Microsoft SQL Server такая регистрация является обязательной лишь для устаревшей версии драйвера. Для обновлённой (sqljdbc4.jar) в этом необходимости уже нет.

После завершения подготовительных операций можно с помощью объекта Connection открыть соединение с базой данных.

При создании объекта Connection необходимо обрабатывать исключение SQLException.

Работа с базой данных

Отправка SQL запросов и получение результатов осуществляется при помощи объекта Statement (создание этого объекта требует обработки исключения SQLException).

Если запрос не предполагает получение данных (не является запросом типа SELECT), для его выполнения использует метод execute, который в случае успешного или неудачного выполнения запроса вернёт значения true или false соответственно.

Для выборки данных из таблицы следует воспользоваться методом executeQuery, который возвратит результаты выборки в виде объекта ResultSet.

При использовании методов execute и executeQuery необходимо обрабатывать исключение SQLException.

Полученные с помощью метода executeQuery результаты выборки можно легко обойти в цикле и извлечь, вызывая геттер соответствующий типу извлекаемых данных (в данном случае String).

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

Полное описание интерфейса ResultSet и в частности геттеров можно найти в документации.

После того как все необходимые запросы к базе данных выполнены и данные из выборки (если она выполнялась) получены соединение с базой данных необходимо закрыть. Для этого служит метод close.

Ниже в качестве примера приведен полный код выборки данных из таблицы Microsoft SQL Server.

JDBC позволяет выполнять весь спектр задач связанных с использованием баз данных, но предоставляет для этого низкоуровневый интерфейс требующий непосредственной работы с SQL. Это не всегда удобно и как следствие во многих проектах вместо JDBC используются более высокоуровневые технологии, такие как, например Hibernate.

Однако JDBC так или иначе является основой работы с базами данных в Java и потому знакомство с ним для Java программиста обязательно.

4 комментария

  1. SQLException error:: No suitable driver found for jdbc:sqlserver:

    что не так я делаю? помогите пожалуйста!

    1. что не так я делаю?

      Хороший вопрос. Но, судя по тексту ошибки, проблема скорее всего в совместимости драйверов для СУБД или их отсутствии либо неправильном подключении к проекту.

      1. No suitable driver found выдается, если JDBC драйвер не найден (отсутствует в CLASSPATH). Во избежание таких ошибок рекомендуется использовать Maven, а не скачивать и подключать jar’ники вручную.

  2. Заработало на SQL Server 2017 Express с такой строкой:

    String instanceName = "localhost\\SQLEXPRESS";

    Но для этого нужна дополнительная настройка. Запустить SQL Server Configuration Manager, выбрать «Сетевая конфигурация SQL Server/Протоколы для SQLEXPRESS», включить там TCP/IP. Затем выбрать «Службы SQL Server», там запустить «Обозреватель SQL Server» (выбрав ручной режим запуска).

    И вместо «драйвер можно скачать здесь» вообще-то принято использовать Maven (или Gradle). В Maven нужно добавить зависимость в pom.xml:

    com.microsoft.sqlserver
    mssql-jdbc
    7.0.0.jre8

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *