Java и MySQL



Поддержка JavaScript отключена

SBP-Program
На главную -> Java -> Java и базы данных &nbsp
]]>

Рассмотрим пример, который свяжет 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. Я при установке не менял никаких настроек, предложенных мастером. Результат на картинке:

Eclipse

Распакуйте дистрибутив mysql-connector-java-5.0.8 в любой каталог. Я распаковал его в папку MySQL_Connector диска «H», получил вот что:

MySQL-Connector

Файл mysql-connector-java-5.0.8-bin из распакованного дистрибутива скопируйте в папку (в моём случае) H:Program FilesJavajre1.6.0_02libext, а вы в свою папку ext:

Connector-Java

Начинаем работать с Eclipse. Окрываем Eclipse SDK. В правом верхнем углу должна быть кнопка Java, как на рисунке. Если этого нет, тогда Window->Open Perspective->Java.

Java

Создадим проект: File->New->Java Project или File->New->Project… и в отрывшемся окне выбираем Java Project, жмём Next. В поле Project Name укажем MySQLProject, жмём Finish. Слева в виде Package Explorer получаем:

Java

Правой кнопкой по src, в откывшемся меню выбираем New->Package. Имя пакета в поле Name установим app. Получаем:

Java

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

data

Итак, что мы имеем? Мы создали проект MySQLProject, установили драйвер в jre/lib/ext, создали MySQL базу данных java-mysql и поместили её по адресу data сервера MySQL. Теперь мы готовы сделать приложение для работы с MySQL базой.

Правой кнопкой по пакету app -> New -> Class вводим имя класса KApplication, установим флаг public static void main. Полученный класс сделаем наследником JFrame и добавим поле serialVersionUID:

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

Добавим в пакет app класс модели KModel: правой кнопкой по пакету app -> New -> Class

AbstractTableModel

Изменим код, созданный мастером следующим образом:

Класс модели мы унаследовали от абстрактного класса AbstractTableModel, переопределив объявленные в нём методы и добавив два своих метода для работы с данными, хранящимися в модели: setTableData и getTableData.

Настало время создать класс, который и будет соединять нас с базой данных.

Напомню, наша база 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 успешно завершён. Скачать пример MySQLProject (8 Кб).

]]> ]]>
&nbsp
&nbsp
&nbsp