Java и MySQL

Javaи MySQL
Базы данных нашли широкоеприменение в современном мире программного обеспечения. Наличие мощныхвычислительных систем делает возможным создание крупных сервисов по сбору,обработке, хранению, и выдаче структурированной информации. При этом в качествеядра может выступать MySQL Database server – хорошозарекомендовавшая себя на практике реализация идеи реляционных баз данных.Помимо этого особое значение приобретают servlet и JSP технологиипрограммирования динамических Web-приложений. Последнее особенно важно, т.к.позволяет относительно легко и просто создавать и поддерживать сайты высокогокачества. Основной целью настоящего руководства является описание в простой инаглядной форме процедуры доступа к базе данных MySQL из java-приложения.
В каждом из пунктов приводятсяобщие сведения, знание которых требуется для успешного выполнения поставленнойзадачи. На основе них формируются конкретные программные реализации,позволяющие получить требуемую функциональность на практике.
В качестве примера, будемиспользовать задачу создания базы данных отдела поставок предприятия,специализирующегося на выпуске кондитерских изделий (Кондитерская фабрика).
Содержание
1.     Программноеобеспечение
2.     УстановкаJDK
3.     Установкаи запуск MySQL Database server
4.     УстановкаMySQL Connector/J
5.     Структурабазы данных
6.     Созданиебазы данных в MySQL
7.     РегистрацияMySQL Connector/J
8.     Соединениес MySQL Database server из java-приложения
9.     Выполнениезапроса к базе данных
Программноеобеспечение
Для рассмотрения процедурыдоступа к базам данных MySQL из java-приложений под управлением ОС Windows накомпьютере должно быть установлено:
·       Windows 9x, Me, NT, 2000, XP,или Windows Server 2003.
·       JavaTM 2 Standard Edition Runtime Environment,а также набор инструментов разработчика Java-приложений JDKTM версии 1.5.0 или выше.
·       MySQL Database Server версии 4.1 иливыше.
·       MySQL Connector/J версии 3.1.6 иливыше.
Системные требования определяютсятребованиями указанных программ, и описаны в поставляемых файлах.
Установка JDK
В настоящем руководстве используетсяJDK версии 1.5.0. Системные требования, а также инструкции по установке можноузнать, кликнув по ссылке http://java.sun.com/j2se/1.5.0/install.html.
Для успешного запуска примеровнеобходимо прописать путь к корневой директории классов приложения  в переменнойокружения CLASSPATH:
setCLASSPATH=;%CLASSPATH%
Установка и запуск MySQL Database server
В руководстве используется MySQLDatabase server версии 4.1 или выше. Он распространяется как в рамках GNUлицензии (General Public License http://www.fsf.org/licenses/), так и в виде коммерческого продукта ( http://www.mysql.com/company/legal/licensing/). Дистрибутив находится здесь http://dev.mysql.com/downloads/. Для установки необходимо запустить файл Setup.exe. Далее следует указатьдиректорию, в которую будет установлен сервер. Помимо этого, программаустановки потребует дополнительный набор сведений, необходимый ей для успешноговыполнения распаковки. Для запуска MySQL сервера необходимо запуститьфайл binmysqld-nt.exe.Для вывода списка параметров, используемых при запуске, добавим параметры –verbose –help. Далее будемпредполагать, что MySQL Database server успешно установлен и запущен.
УстановкаMySQL Connector/J
MySQL Connector/J реализует Sun’sJDBC 3.0 API для сервера реляционной базы данных MySQL.
MySQL Connector/J поддерживаетJava-2 JVMs, включая JDK-1.2.x, JDK-1.3.x, JDK-1.4.x и JDK-1.5.x, и длякомпиляции (но не для запуска) требует наличия JDK-1.4.x или выше. MySQLConnector/J поддерживает все известные версии MySQL Database server.
После распаковки архива впеременную окружения CLASSPATH необходимо добавить путь к jar-файлу mysql-connector-java-3.1.6-bin.jar. Приэтом путь должен содержать имя указанного файла:
setCLASSPATH=mysql-connector-java-3.1.6-bin.jar;%CLASSPATH%
Структурабазы данных
База данных (supplement) отдела поставок будетсодержать две таблицы:
1.     Таблицаресурсов (необходимые для производства продукты [полуфабрикаты]пищевой промышленности).
2.     Таблицапоставщиков (поставщики ресурсов).
В скобках указываются имена,используемые в MySQL для описания соответствующих элементов:
Таблица ресурсов (deliveries) содержит 5 полей:
— идентификатор ресурса (id)
— название ресурса (name)
— название поставщика (supplier)
— объем поставки (amount)(количество единиц продукции в поставке)
— стоимость единицы продукта (price)(денежный формат представления данных)
Таблица поставщиков (suppliers) содержит 6 полей:
— идентификатор поставщика (id)
— название компании поставщика (name)
— расчетный счет (account)
— имя контактного лица (КЛ) (first_name)
— фамилия КЛ (last_name)
— отчество КЛ (second_name)
Созданиебазы данных в MySQL
В настоящем пункте описываетсяпоследовательность команд, используемая для создания базы данных supplement в MySQL.
1.    
shell>binmysql.exe -u root -p lifeisgood
2.                             supplement и делаем ее текущей:
mysql>CREATE DATABASE supplement;
mysql>USE supplement;
3.                             deliveries: 4.              5.                  -> id MEDIUMINT NOT NULL AUTO_INCREMENT, 6.                  -> name VARCHAR(30) NOT NULL, 7.                  -> supplier VARCHAR(30) NOT NULL, 8.                  -> amount INT UNSIGNED DEFAULT ‘0’ NOT NULL, 9.                  -> price DOUBLE(16, 2) DEFAULT ‘0.00’ NOT NULL, 10.                 -> PRIMARY KEY (id) 11.                 -> );                                             
12.                         suppliers: 13.             14.                 -> id MEDIUMINT NOT NULL AUTO_INCREMENT,15.                 -> name VARCHAR(30) NOT NULL,16.                 -> account BIGINT NOT NULL,17.                 -> first_name VARCHAR(30) NOT NULL,18.                 -> last_name VARCHAR(30) NOT NULL,19.                 -> second_name VARCHAR(30) NOT NULL,20.                 -> PRIMARY KEY (id)21.                 -> );                                             
22.                         datadeliveries.csv и datasuppliers.csv (предполагается,что файлы были предварительно созданы и заполнены необходимыми данными):
mysql>LOAD DATA INFILE ‘../data/deliveries.csv’ INTO TABLE deliveries;
mysql>LOAD DATA INFILE ‘../data/suppliers.csv’ INTO TABLE suppliers;
23.                         
mysql> exit
РегистрацияMySQL Connector/J
Создадим класс MySQLAccess, внутри которогоинкапсулируем доступ к созданной в предыдущем пункте базе данных. Поместим егоописание в файл MySQLAccess.java.
Для доступа к базам данныхиспользуется JDBC, а конкретное соединение предоставляется объектомкласса DriverManager.DriverManager должен знать типдрайвера, используемого для работы с конкретной СУБД. Самый простой способрегистрации драйвера, это использовать Class.forName() длякласса, реализующего интерфейс java.sql.Driver.Для MySQL Connector/J имя класса драйвера имеет вид com.mysql.jdbc.Driver.
В следующем фрагменте кодапроисходит регистрация MySQL драйвера. …  public static void main(String[] args) {    …    try {      // РегистрациядрайвераMySQL      Class.forName(«com.mysql.jdbc.Driver»).newInstance();      …    } catch (Exception e) {      e.printStackTrace(System.err);    }    …  }…                        
Соединение с MySQL Database server из java-приложения
После того как мызарегистрировали драйвер базы данных MySQL, можно установить соединение ссервером, используя метод getConnection() класса DriverManager. Указанный метод вкачестве параметра принимает URL базы данных (хотя возможно дополнительноуказать имя пользователя и пароль, см. документацию к классу). Метод возвращаеткласс-соединение Connection сбазой данных.
В следующем фрагменте кодапроисходит установка соединения с базой данных supplement. import java.sql.Connection;import java.sql.DriverManager;…  public static void main(String[] args) {    Connection conn = null;    …    try {      …      // Устанавливаем соединение с базой данных      conn = DriverManager.getConnection(«jdbc:mysql://localhost/supplement»);      …    } catch (Exception e) {      e.printStackTrace(System.err);    }    …  }…                        
Выполнениезапроса к базе данных
Запрос к базе данныхинкапсулируется внутри объекта класса Statement.В приведенном ниже фрагменте кода выполняется простой запрос к базе данных дляполучения всех записей таблицы deliveries.Результат запроса помещается в объект-хранилище ResultSet, содержимое которого затемвыводится на консоль. import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;…  public static void main(String[] args) {    Connection conn = null;    Statement stmt = null;    ResultSet rs = null;    try {      …      // Создаем объект-выражение      stmt = conn.createStatement();      // Выполняем запрос к базе данных      rs = stmt.executeQuery(«SELECT * FROM deliveries»);      // Выводим на консоль значения 2-х полей полученных записей      while (rs.next()) {        System.out.println(rs.getString(«id»)                                 + “: ” + rs.getString(«price»));      }    } catch (Exception e) {      e.printStackTrace(System.err);    } finally {      try {        if (rs != null) { rs.close(); }        if (stmt != null) { stmt.close(); }        if (conn != null) { conn.close(); }      } catch (SQLException e) {        e.printStackTrace(System.err);      }    }  }…