5

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

## 5.1 Подключение к MySQL

Для хранения данных, как правило, используются базы данных. В приложениях на Java мы можем использовать различные системы управления базами данных. Но так как, на сегодняшний день одной из наиболее используемых в приложениях на Java является СУБД MySQL, то основные моменты взаимодействия с БД будут рассматриваться преимущественно на примере MySQL.

Один из способов работы с базой данных представляет использование JDBC. JDBC (Java Database Connectivity) представляет специальный API, благодаря которому мы можем абстрагироваться от конкретной СУБД с ее особенностями и использовать единый интерфейс для работы с различными СУБД.

Для работы с базой данных в приложении на Java через JDBC необходим драйвер. Обычно разработчик каждой отдельной СУБД (MySQL, Oracle, PostgreSQL и т.д.) предоставляет специальный драйвер. Более подробно про аспекты работы в приложении Java можно посмотреть в соответствующем руководстве Java и базы данных. В данном же случае мы сосредоточимся непосредственно на работе с бд именно в JavaEE.

Для работы с MySQL необходим драйвер Connector/J, который можно загрузить с официального сайта со страницы https://dev.mysql.com/downloads/connector/j/.

На странице загрузок выберем в поле "Select Operating System" пункт "Platform Independent" и затем загрузим zip-пакет с драйвером.

Распакуем загруженный пакет и найдем файл mysql-connector-java-8.0.12.jar (версия файла может отличаться).

Создадим в Eclipse новый проект по типу Dynamic Web Project и добавим в его папку WebContent/WEB-INF/lib:

Убедимся, что сервер MySQL запущен и сперва проверим, что мы можем подключаться к серверу базы данных. Вначале создадим на сервере MySQL пустую базу данных, которую назовем products и с которой мы будет работать в приложении на Java EE. Для создания базы данных применяется выражение SQL:

| `CREATE` `DATABASE` `productdb``;`

Эту команду можно выполнить либо из консольного клиента MySQL Command Line Client, либо из графического клиента MySQL Workbench, которые устанавливются вместе с сервером MySQL. Подробнее про создание базы данных можно прочитать в статье Создание и удаление базы данных.

Далее добавим в проект сервлет. Допустим, он будет называться ProductsServlet и будет содержать следующий код:

`import` `java.io.IOException``;`

`import` `java.io.PrintWriter``;`

`import` `java.sql.Connection``;`

`import` `java.sql.DriverManager``;`

`import` `javax.servlet.ServletException``;`

`import` `javax.servlet.annotation.WebServlet``;`

`import` `javax.servlet.http.HttpServlet``;`

`import` `javax.servlet.http.HttpServletRequest``;`

`import` `javax.servlet.http.HttpServletResponse``;`

`@WebServlet("/products")`

`public` `class` `ProductsServlet` `extends` `HttpServlet``{`

`protected` `void` `doGet``(HttpServletRequest request, HttpServletResponse response) throws` `ServletException``, IOException {`

`response.setContentType("text/html");`

`PrintWriter writer = response.getWriter();`

`try{`

`String url = "jdbc:``mysql://localhost/productdb?serverTimezone=Europe/Moscow&useSSL=false``";`

`String username = "root";`

`String password = "password";`

`Class.forName("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();`

`try` `(Connection conn = DriverManager.getConnection(url, username, password)){`

``

`writer.println("Connection to ProductDB succesfull!");`

`}`

`}`

`catch(Exception ex){`

`writer.println("Connection failed...");`

`writer.println(ex);`

`}`

`finally` `{`

`writer.close();`

`` `}`

`}`

`}`

Переменная url хранит строку подключения. В частности, здесь она указывает, что сервер MySQL запущен на локальной машине (localhost), а подключение идет к БД productdb. Переменные username и password указывают соответственно на логин и пароль к серверу MySQL. В каждом конкретном случае эти значения могут отличаться.

Затем идет загрузка драйвера:

| `Class.forName``("com.mysql.cj.jdbc.Driver").getDeclaredConstructor().newInstance();`

И далее создается объект Connection для взаимодействия с базой данной:

| `try` `(Connection conn = DriverManager.getConnection(url, username, password)){`

В случае удачного подключения после запуска приложения мы увидим соответствующее сообщение в браузере:

Если же что-то установлено неправильно: строка подключения, логин, пароль, не загужен драйвер или что-то еще, то мы увидим сообщение об ошибке.

Назад Содержание Вперед