Java і MySQL

Розглянемо приклад, який зв'яже Java-програма з СУБД MySQL (Java MySQL). Працювати будемо в середовищі Eclipse.

Де взяти Eclipse? Eclipse завантажити можна з http://www.eclipse.org/platform. Безкоштовно. Java повинна бути встановлена до установки Eclipse.

Де взяти Java? Java завантажити можна з www.sun.com безкоштовно.

Де взяти MySQL? MySQL завантажити можна з http://www.mysql.com/. Безкоштовно.

Ще знадобиться драйвер JDBC MySQL, який на сайті називається MySQL Connector/J 5.0.8, а завантажений файл на комп'ютер драйвера називається mysql-connector-java-5.0.8.

Де взяти MySQL Connector/J? MySQL Connector/J завантажити можна з http://dev.mysql.com.downloads/index.html. Безкоштовно.

Драйвер для MySQL Connector/J потрібен для зв'язку Java - додатки і MySQL бази даних.

MySQL

Встановіть MySQL. Я при установці не міняв ніяких налаштувань, запропонованих майстром. Результат на картинці: java-mysql

MySQL Connector/J

Розпакуйте дистрибутив mysql-connector-java-5.0.8 в будь-який каталог. Я розпакував його в папку MySQL_Connector диска «H», отримав ось що: MySQL-Connector

Файл mysql-connector-java-5.0.8-bin з розпакованого дистрибутива скопіюйте в папку (в моєму випадку) H:\Program Files\Java\jre1.6.0_02\lib\ext, а ви в свою папку ext: Connector-Java

Java+ MySQL Connector/J + MySQL

Починаємо працювати з Eclipse. Відкриваємо Eclipse SDK. У правому верхньому куті повинна бути кнопка Java, як на малюнку. Якщо цього немає, тоді Window -> Open Perspective -> Java. Java+ MySQL Connector/J + MySQL

Створимо проект: File –> New->Java Project або File –> New->Project... і у вікні вибираємо Java Project, тиснемо Next. В полі Project Name вкажемо MySQLProject, тиснемо Finish. Зліва у вигляді Package Explorer отримуємо: MySQL

Правою кнопкою по src, в откившемся меню вибираємо New->Package. Ім'я пакета в полі Name встановимо app. Отримуємо: MySQL

Скачайте базу java-mysql (1Кб), розпакуйте і помістіть її в папку data півночі MySQL. У мене вийшло так: MySQL

Отже, що ми маємо? Ми створили проект MySQLProject, встановили драйвер jre/lib/ext, створили MySQL базу даних java-mysql і помістили її за адресою data сервера MySQL. Тепер ми готові зробити програму для роботи з MySQL базу.

Правою кнопкою по пакету app -> New -> Class вводимо ім'я класу KApplication, встановимо прапор public static void main. Отриманий клас зробимо спадкоємцем JFrame і додамо поле serialVersionUID:

Перейдемо до моделі, яка буде зберігати інформацію з бази даних.

Вгору

AbstractTableModel

Додамо в пакет app клас моделі KModel: правою кнопкою по пакету app -> New -> Class AbstractTableModel

Змінимо код, створений майстром наступним чином:

Клас моделі ми успадкували від абстрактного класу AbstractTableModel, якщо перевизначити оголошені в ньому методи і додавши два своїх методу для роботи з даними, що зберігаються в моделі: setTableData і getTableData.

Настав час створити клас, який і буде єднати нас з базою даних.

Вгору

Java + MySQL

Нагадаю, наша база java-mysql працює під управлінням СУБД MySQL, JDBC драйвера для цієї СУБД називається MySQL Connector/J. Створимо клас, який з'єднає нас з базою даних. Правою кнопкою по пакету app -> New -> Class. Ім'я класу KFDB: KFDB

Змінимо код класу KFDB, створений майстром так:

Ми оголосили в конструкторі класу параметри:

driver - це ім'я нашого драйвера MySQL Connector/J;

url - адреса бази даних, у нас це адреса бази java-mysql;

login - ім'я користувача;

pass - пароль.

У блоці try/catch завантажуємо статичним методом forName дравер для бази даних. Статичним методом getConnection встановлюємо з'єднання з нашою базою даних. Клас DriverManager керує роботою драйверів. Якщо драйвер, в нашому випадку MySQL Connector/J, не виявиться, то буде викинуто виняток ClassNotFoundException, а якщо DriverManager не зможе з'єднатися з нашою базою java-mysql, то буде викинуто виняток SQLException.

Поле con, що має тип Connection, можна представити як телефонний дріт, по якому інформація буде перетікати з нашого додатка в базу даних і назад.

Отримаємо з цього проводу інформацію з бази даних. Введемо поле st типу Statement. Це поле дасть нам можливість звернутися до бази даних з якимось конкретним запитом. Визначимо метод getNomen, який поверне інформацію з бази даних:

У методі getNomen створюємо об'єкт Statement st, він дозволить нам зробити запит до бази, сам запит виконується методом executeQuery, який повертає набір даних у вигляді об'єкта ResultSet rs. Цей набір даних можна представити як таблицю з бази даних, що містить дані та інформацію про цієї таблиці, наприклад, скільки стовпців є в таблиці. Інформацію про устойстве отриманого набору даних виймемо з об'єкта ResultSetMetaData rsmd. Нас цікавить кількість колонок в наборі даних. Для цього пишемо рядок: int cols = rsmd.getColumnCount(). Метод rs.next() переміщає нас за рядками набору даних. Отримавши перший рядок, що в циклі for витягаємо значення кожної комірки рядка методом rs.getObject(i) і додаємо його в вектор newVector. Сформований таким чином newVector додаємо в результуючий вектор retVector. Вектор retVector стає зображенням набору даних rs.

Повернемося до головного вікна програми,тобто до класу KApplication, і наведемо його код до виду(не забудьте вказати вашого користувача і пароль (у мене "root" і "masterkey" відповідно)):

Компілюємо і запускаємо: правою кнопкою по класу KApplication -> Run As -> Java Application, отримуємо: Nomen

Приклад для MySQL успішно завершено.