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

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

Последнее обновление: 28.09.2018

Для хранения данных, как правило, используются базы данных. В приложениях на 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/.

Установка MySQL Connector/J

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

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

Драйвер MySQL Connector/J

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

Добавление драйвера MySQL Connector/J в Eclipse

Убедимся, что сервер 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)){

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

Подключение к MySQL из Java EE

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

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850