Подключение к базе данных с использование JDBC.

Предположим, что мы создали базу данных в файле и разместили ее по адресу ~/test.  “~” – Это Ваша личная папка в Windows. У меня это C:\Users\acer. test – название файла БД. Как сделать такую базу читайте здесь.

Также предположим, что Вы уже создали свой проект в IntelliJ IDEA с использованием gradle, как я это описывал здесь.

Пример 1

Поставим перед собой задачу. Нужно подключиться к БД (~/test) и извлечь из таблицы messages всю информацию и вывести на консоль.

Шаг 1

Подключение H2 database к gradle проекту.

Шаг 2

Создаем класс Main в каком-нибудь пакете. У меня это ru.itsphere.fromdbtoconsole.

Кратко опишу, что происходит в этом коде.

Первым делом мы загрузили в память класс драйвера, который нужен для подключения к этой конкретно БД H2. Затем мы создали Connection к этой БД. Для этого нам понадобилось узнать URL, login и password это БД. Эти данные мы указывали при создание этой БД. Далее при помощи Connection мы создали Statement и выполнили SQL выражение “SELECT * FROM messages;”. 

Результатом выполнения стал ResultSet, из которого мы извлекли всю необходимую информацию. И все вывели на консоль. Когда программа выйдет из блока try () {} ResultSet, Connection, Statement закроются в порядке обратном их созданию.

На экран выведется следующее.

Пример 2

Теперь изменим немного задачу и попробуем извлечь только текст сообщения, у которых автор Dasha. Для этого нужно изменить только метод main.

Кратко опишу, что происходит в этом коде.

Первым делом мы загрузили в память класс драйвера, который нужен для подключения к этой конкретно БД H2. Затем мы создали Connection к этой БД. Для этого нам понадобилось узнать URL, login и password это БД. Эти данные мы указывали при создание этой БД. Далее при помощи Connection мы создали PreparedStatement и выполнили SQL выражение “SELECT * FROM messages WHERE author = ?;”. Если нужно в запрос вставлять какие-то значения, то не используйте конкатенацию! используйте PreparedStatement. 

Результатом выполнения стал ResultSet, из которого мы извлекли всю необходимую информацию. И все вывели на консоль. Когда программа выйдет из блока try () {} ResultSet, Connection, Statement закроются в порядке обратном их созданию.

На экран выведется следующее.

Все этого уже в принципе достаточно, чтобы решить следующие задачи.
Задачка 1

Возможные ошибки

Can’t get connection: База данных уже иÑ�пользуетÑ�Ñ�: null. Возможные решениÑ�: закрыть вÑ�е другие Ñ�оединениÑ�; иÑ�пользовать режим Ñ�ервера
Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode [90020-191]

Данная ошибка возникла т.к. вы запустили метод main в то время, когда уже соединились к своей базе данных из другого места. Закройте соединение через браузер, если не поможет, то возможно остался запущенный процесс в диспетчере задач windows (завершите его). Еще возможно в IDE Вы запустили несколько раз свое приложение в этом случае закройте все приложения.
Ответ, как не странно, кроется в сообщении об ошибке Database may be already in use: null. Possible solutions: close all other connection(s); use the server mode.

Комментарий “Подключение к базе данных с использование JDBC.

  1. Почему то выводит “Can’t get driver: org.h2.Driver”, зависимость добавлена и зарефрешена.

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

Ваш e-mail не будет опубликован.

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">