Реферат: Java и MySQL

Javaи MySQL

Базы данных нашли широкоеприменение в современном мире программного обеспечения. Наличие мощныхвычислительных систем делает возможным создание крупных сервисов по сбору,обработке, хранению, и выдаче структурированной информации. При этом в качествеядра может выступать MySQL Database server - хорошозарекомендовавшая себя на практике реализация идеи реляционных баз данных.Помимо этого особое значение приобретают servlet и JSP технологиипрограммирования динамических Web-приложений. Последнее особенно важно, т.к.позволяет относительно легко и просто создавать и поддерживать сайты высокогокачества. Основной целью настоящего руководства является описание в простой инаглядной форме процедуры доступа к базе данных MySQL из java-приложения.

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

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

Содержание

<span Times New Roman"">1.<span Times New Roman"">    

Программноеобеспечение

<span Times New Roman"">2.<span Times New Roman"">    

УстановкаJDK

<span Times New Roman"">3.<span Times New Roman"">    

Установкаи запуск MySQL Database server

<span Times New Roman"">4.<span Times New Roman"">    

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

<span Times New Roman"">5.<span Times New Roman"">    

Структурабазы данных

<span Times New Roman"">6.<span Times New Roman"">    

Созданиебазы данных в MySQL

<span Times New Roman"">7.<span Times New Roman"">    

РегистрацияMySQL Connector/J

<span Times New Roman"">8.<span Times New Roman"">    

Соединениес MySQL Database server из java-приложения

<span Times New Roman"">9.<span Times New Roman"">    

Выполнениезапроса к базе данных

Программноеобеспечение

Для рассмотрения процедурыдоступа к базам данных MySQL из java-приложений под управлением ОС Windows накомпьютере должно быть установлено:

·<span Times New Roman"">       

Windows 9x, Me, NT, 2000, XP,или Windows Server 2003.

·<span Times New Roman"">       

JavaTM 2 Standard Edition Runtime Environment,а также набор инструментов разработчика Java-приложений JDKTM версии 1.5.0 или выше.

·<span Times New Roman"">       

MySQL Database Server версии 4.1 иливыше.

·<span Times New Roman"">       

MySQL Connector/J версии 3.1.6 иливыше.

Системные требования определяютсятребованиями указанных программ, и описаны в поставляемых файлах.

Установка JDK

В настоящем руководстве используетсяJDK версии 1.5.0. Системные требования, а также инструкции по установке можноузнать, кликнув по ссылке http://java.sun.com/j2se/1.5.0/install.html.

Для успешного запуска примеровнеобходимо прописать путь к корневой директории классов приложения <java-app-home> в переменнойокружения CLASSPATH:

<span Courier New";mso-ansi-language:EN-US">setCLASSPATH=<java-app-home>;%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 сервера необходимо запуститьфайл <MySQL-home>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. Приэтом путь должен содержать имя указанного файла:

<span Courier New";mso-ansi-language:EN-US">setCLASSPATH=<MySQL-Connector/J-home>mysql-connector-java-3.1.6-bin.jar;%CLASSPATH%

Структурабазы данных

База данных (supplement) отдела поставок будетсодержать две таблицы:

<span Times New Roman"">1.<span Times New Roman"">    

Таблицаресурсов (необходимые для производства продукты [полуфабрикаты]пищевой промышленности).

<span Times New Roman"">2.<span Times New Roman"">    

Таблицапоставщиков (поставщики ресурсов).

В скобках указываются имена,используемые в MySQL для описания соответствующих элементов:

Таблица ресурсов (deliveries) содержит 5 полей:
— идентификатор ресурса (id)
— название ресурса (name)
— название поставщика (supplier)
— объем поставки (amount)(количество единиц продукции в поставке)
— стоимость единицы продукта (price)(денежный формат представления данных)

Таблица поставщиков (suppliers) содержит 6 полей:
— идентификатор поставщика (id)
— название компании поставщика (name)
— расчетный счет (account)
— имя контактного лица (КЛ) (first_name)
— фамилия КЛ (last_name)
— отчество КЛ (second_name)

Созданиебазы данных в MySQL

В настоящем пункте описываетсяпоследовательность команд, используемая для создания базы данных supplement в MySQL.

<span Times New Roman"">1.<span Times New Roman"">    

<span Courier New";mso-ansi-language:EN-US">shell><MySQL-home>binmysql.exe -u root -p lifeisgood

<span Times New Roman"">2.<span Times New Roman"">                             

supplement и делаем ее текущей:

<span Courier New";mso-ansi-language:EN-US">mysql>CREATE DATABASE supplement;

<span Courier New";mso-ansi-language:EN-US">mysql>USE supplement;

<span Times New Roman"">3.<span Times New Roman"">                             

deliveries: <span Courier New"">4.<span Times New Roman"">              <span Courier New";mso-ansi-language:EN-US">5.<span Times New Roman"">                  -> id MEDIUMINT NOT NULL AUTO_INCREMENT, <span Courier New"">6.<span Times New Roman"">                  -> name VARCHAR(30) NOT NULL, <span Courier New"">7.<span Times New Roman"">                  -> supplier VARCHAR(30) NOT NULL, <span Courier New";mso-ansi-language:EN-US">8.<span Times New Roman"">                  -> amount INT UNSIGNED DEFAULT '0' NOT NULL, <span Courier New";mso-ansi-language:EN-US">9.<span Times New Roman"">                  -> price DOUBLE(16, 2) DEFAULT '0.00' NOT NULL, <span Courier New"">10.<span Times New Roman"">                 -> PRIMARY KEY (id) <span Courier New"">11.<span Times New Roman"">                 -> );                                             

<span Times New Roman"">12.<span Times New Roman"">                         

suppliers: <span Courier New"">13.<span Times New Roman"">             <span Courier New";mso-ansi-language:EN-US">14.<span Times New Roman"">                 -> id MEDIUMINT NOT NULL AUTO_INCREMENT,<span Courier New"">15.<span Times New Roman"">                 -> name VARCHAR(30) NOT NULL,<span Courier New"">16.<span Times New Roman"">                 -> account BIGINT NOT NULL,<span Courier New";mso-ansi-language:EN-US">17.<span Times New Roman"">                 -> first_name VARCHAR(30) NOT NULL,<span Courier New";mso-ansi-language:EN-US">18.<span Times New Roman"">                 -> last_name VARCHAR(30) NOT NULL,<span Courier New";mso-ansi-language:EN-US">19.<span Times New Roman"">                 -> second_name VARCHAR(30) NOT NULL,<span Courier New"">20.<span Times New Roman"">                 -> PRIMARY KEY (id)<span Courier New"">21.<span Times New Roman"">                 -> );                                             

<span Times New Roman"">22.<span Times New Roman"">                         

<MySQL-home>datadeliveries.csv и <MySQL-home>datasuppliers.csv (предполагается,что файлы были предварительно созданы и заполнены необходимыми данными):

<span Courier New";mso-ansi-language:EN-US">mysql>LOAD DATA INFILE '../data/deliveries.csv' INTO TABLE deliveries;

<span Courier New";mso-ansi-language:EN-US">mysql>LOAD DATA INFILE '../data/suppliers.csv' INTO TABLE suppliers;

<span Times New Roman"">23.<span Times New Roman"">                         

<span Courier New"">mysql> exit

РегистрацияMySQL Connector/J

Создадим класс MySQLAccess, внутри которогоинкапсулируем доступ к созданной в предыдущем пункте базе данных. Поместим егоописание в файл <java-app-home>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);      }    }  }...                
еще рефераты
Еще работы по программированию, базе данных