Учебная страница курса биоинформатики,
год поступления 2010
Title
На этом занятии мы будем использовать базу данных student3_db, потому что для этой базы данных у пользователя student (без пароля) есть права на редактирование.
Задания
Попробовать создать свои таблицы email, telephone, interest (person там уже есть). Только добавляйте к названиям своих таблиц какие-нибудь суффиксы (например, email_anna), чтобы ваши таблицы не путались между собой.
- Попробуйте повставлять туда какие-нибудь данные, а потом эти данные оттуда повытаскивать. И хорошо бы все это делать из Java. Но сначала можно попробовать в консоли mysql - для тренировки и отладки запросов.
- Представьте, что вам нужно написать приложение для работы с базой данных архива медицинских страховок для выезжающих зарубеж. После освоение графики мы сделаем графический интерфейс к этой системе. А пока вам нужно написать ту часть этого приложения, которая отвечает за общение с базой данных.
В базе данных student3_db уже есть табличка insurance, хранящая информацию о страховках. На всякий случай, код для создания этой таблицы:
CREATE TABLE `insurance` ( `contract_id` int(11) NOT NULL AUTO_INCREMENT, `first_name` varchar(100) NOT NULL, `last_name` varchar(100) NOT NULL, `age` int(11) NOT NULL, `sex` enum('male','female') NOT NULL, `extreme_sport` tinyint(4) NOT NULL, `country` enum('schengen','usa','japan','australia','other') NOT NULL, `is_multiple` tinyint(4) NOT NULL, `days` int(11) NOT NULL, `coverage` enum('30000','50000','75000') NOT NULL, `contract_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`contract_id`), KEY `last_name` (`last_name`,`first_name`) );
Поля contract_id и contract_date заполняются автоматически, в запрос добавления данных в базу их включать не надо.
Вам нужно написать некий класс (например Insurance) для хранения всей необходимой информации. Поля этого класса по сути будут дублировать поля таблицы. А еще нужно написать класс (например, DBAccess), который будет отвечать за связь с базой данных, то есть у него будут методы для:
- 1) создания (и закрытия) соединения с базой данных;
2) сохранения объекта класса Insurance в базе данных (то есть вставлять строчку в таблицу insurance);
3) вытаскивания объекта Insurance из базы данных по contract_id (который приходит на вход методу); то есть этот метод будет делать запрос к базе и создавать объект Insurance по имеющейся информации;
4) вытаскивание объектов Insurance по каким-то другим полям, например по фамилии.
и т.д. (что придумаете)
И сделайте какой-нибудь main с демонстрацией работы системы: добавление/вытаскивание информации.
Я вам советую хранить один объект Connection, который создается при первом обращении к базе данных и закрывается в самом конце. Но соединение может падать - в этом случае вам нужно уметь переподключаться. Например, можно завести метод getConnection(), который либо возвращет уже имеющиеся рабочее соединение, либо создает новое соединение: