Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2010

Title

На этом занятии мы будем использовать базу данных student3_db, потому что для этой базы данных у пользователя student (без пароля) есть права на редактирование.

Задания

  1. Попробовать создать свои таблицы email, telephone, interest (person там уже есть). Только добавляйте к названиям своих таблиц какие-нибудь суффиксы (например, email_anna), чтобы ваши таблицы не путались между собой.

  2. Попробуйте повставлять туда какие-нибудь данные, а потом эти данные оттуда повытаскивать. И хорошо бы все это делать из Java. Но сначала можно попробовать в консоли mysql - для тренировки и отладки запросов.
  3. Представьте, что вам нужно написать приложение для работы с базой данных архива медицинских страховок для выезжающих зарубеж. После освоение графики мы сделаем графический интерфейс к этой системе. А пока вам нужно написать ту часть этого приложения, которая отвечает за общение с базой данных.

В базе данных 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), который будет отвечать за связь с базой данных, то есть у него будут методы для:

и т.д. (что придумаете)

И сделайте какой-нибудь main с демонстрацией работы системы: добавление/вытаскивание информации.

Я вам советую хранить один объект Connection, который создается при первом обращении к базе данных и закрывается в самом конце. Но соединение может падать - в этом случае вам нужно уметь переподключаться. Например, можно завести метод getConnection(), который либо возвращет уже имеющиеся рабочее соединение, либо создает новое соединение:

   1 public static Connection getConnection() throws SQLException
   2 {
   3         // conn - статическое приватное (!) поле, хранящее соединение
   4         if (conn == null || conn.isClosed())  
   5         {
   6                 conn = createConnection(); // метод, создающий соединение
   7         }
   8         return conn;
   9 }