45
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені Ігоря Сікорського» ФАКУЛЬТЕТ ПРИКЛАДНОЇ МАТЕМАТИКИ Кафедра системного програмування та спеціалізованих комп’ютерних систем Лабораторна робота №2 з дисципліни «Бази даних і засоби управління» Виконав: студент ІII курсу ФПМ групи КВ-73 Єрмоленко Денис Вадимович

scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ

«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені Ігоря Сікорського»

ФАКУЛЬТЕТ ПРИКЛАДНОЇ МАТЕМАТИКИ

Кафедра системного програмування та спеціалізованих комп’ютерних систем

Лабораторна робота №2

з дисципліни«Бази даних і засоби управління»

Виконав: студент ІII курсу

ФПМ групи КВ-73

Єрмоленко Денис Вадимович

Перевірив(ла):

Київ – 2019

Page 2: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Ознайомлення з базовими операціями СУБД PostgreSQL

Мета роботи: здобуття практичних навичок проектування та побудови реляційних баз даних та створення прикладних програм з базами даних

Завдання роботи полягає у наступному: 1. Виконати нормалізацію бази даних, яка була створена у лабораторній роботі №1,

до третьої нормальної форми (3НФ);2. Реалізувати функціональні вимоги, наведені нижче.

Функціональні вимоги: 1. Реалізувати внесення, редагування та вилучення даних у базі засобами

консольного інтерфейсу;2. Передбачити автоматичне пакетне генерування «рандомізованих» даних у базі; 3. Забезпечити реалізацію пошуку за двома-трьома атрибутами з двох сутностей

одночасно: для числових атрибутів – у рамках діапазону, для рядкових – як перелічення, для логічного типу – значення True/False, для дат – у рамках діапазону дат;

4. Забезпечити реалізацію повнотекстового пошуку за будь-яким текстовим атрибутом бази даних засобами PostgreSQL з виділенням знайденого фрагменту.

Вимоги до інтерфейсу користувача:1. Використовувати консольний інтерфейс користувача.

Варіант 7

Пошук за атрибутами має відбуватися по логічному типу та діапазону дат.

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

Нормалізована модель даних

Page 3: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Таблиця Category знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця Category знаходиться у 2НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа CtId. Таблиця Category знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа.

Таблиця Product знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця Product знаходиться у 2НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа PrId. Таблиця Product знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа.

Таблиця Buying знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця Buying знаходиться у 2 НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа BuyId. Таблиця Buying знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа.

Таблиця Review знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця Review знаходиться у 2НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа RevId. Таблиця Review знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа.

Таблиця Client знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця Client знаходиться у 2НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа ClId. Таблиця Client знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа

Таблиця Passport знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця Passport знаходиться у 2НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа PasId. Таблиця Passport знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа

Таблиця PhoneNumber знаходиться у 1 нормальній формі , бо всі поля мають тільки атомарні значення. Таблиця PhoneNumber знаходиться у 2НФ, бо знаходиться у 1НФ та кожний її неключовий атрибут функціонально повністю залежить від первинного ключа PhId. Таблиця PhoneNumber знаходиться у 3НФ , бо знаходиться у 2НФ та кожний її атрибут нетранзитивно залежить від первинного ключа

Page 4: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Опис програми

Програма створена за патерном MVC (Model-View-Controller). Складається відповідно з класів Model , View та Controller.

У класі Model реалізовані функції , що здійснюють SQL запити до Бази Даних, а також функція, що виконує з’єднання з БД.

У класі View реалізовані функції, що використовуються для відображення в консоль пунктів меню, виводу даних з таблиць, тобто функції, що відображують певну інформацію в консоль.

У класі Controller реалізовані функції для відповідних меню та допоміжні функції.

Опис структури меню програми

Меню програми можна розглядати як її концептуальну модель

Page 5: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Посилання для навігації по програмі

1. Controller 1.1 Функц ія для головного меню 1.2 Функція для меню таблиць 1.3 Функція для меню показу таблиць 1.4 Функції для меню вставки у конкретну таблицю 1.5 Функції для меню редагування у конкретній таблиці 1.6 Функції для меню вилучення з конкретної таблиці 1.7 Функції для меню пошуку з конкретної таблиці 1.8 Функція рандомного внесення даних до таблиці Review 1.9 Функції для статичних та динамічного пошуку з 3-х таблиць

2. View 3. Model

3.1 Функція підкдючення до БД3.2 Функції вибору всіх даних з таблиць3.3 Функції внесення даних до таблиць3.4 Функції редагування даних в таблицях3.5 Функції вилучення даних з таблиць3.6 Функція поушку з 3-х таблиць3.7 Функція пошуку за словом 3.8 Функція пошуку за фразою

Page 6: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Лістинг програми

package org.lab2;

import org.lab2.controller.Controller;import org.lab2.model.Model;import org.lab2.view.View;

import java.io.IOException;

public class Main { public static void main(String[] args) throws IOException { Model model = new Model(); View view = new View(); Controller controller = new Controller(model , view); model.make_connection(); controller.mainMenu(); }}

Controller

package org.lab2.controller;

import org.lab2.model.Model;import org.lab2.view.View;

import java.io.IOException;import java.sql.ResultSet;import java.sql.SQLException;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Random;import java.util.Scanner;import java.util.Vector;

public class Controller { private Model model; private View view; private Scanner scanner;

public Controller(Model model, View view) { this.model = model; this.view = view; }

//Головне меню ) public void mainMenu() throws IOException { int choise = -1; scanner = new Scanner(System.in); do { view.showMainMenu(); try { choise = Integer.parseInt(scanner.nextLine()); if(choise >= 1 && choise <=6) menuTable(choise); else if (choise == 7)

Page 7: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

menuSearchFrom3Table(); else if (choise == 8) fullTextSearchMenu(); else if (choise == 9) RandomGenMenu(); else{ if(choise !=10) System.out.println("Incorrect input"); } } catch (NumberFormatException numberError) { System.out.println("Incorrect input!"); } } while (choise != 10); scanner.close(); }

//Меню Таблиць public void menuTable(int tableNumber) { int choise = -1; do { if(tableNumber == 1) view.showMenuTableOperations("Category"); else if(tableNumber == 2) view.showMenuTableOperations("Product"); else if(tableNumber == 3) view.showMenuTableOperations("Pasport"); else if(tableNumber == 4) view.showMenuTableOperations("Client"); else if(tableNumber == 5) view.showMenuTableOperations("PhoneNumber"); else if(tableNumber == 6) view.showMenuTableOperations("Review"); try { choise = Integer.parseInt(scanner.nextLine()); switch (choise) { case 1: showTableMenu(tableNumber); break; case 2: if(tableNumber == 1) insertInTableCategoryMenu(); else if(tableNumber == 2) insertInTableProductMenu(); else if(tableNumber == 3) insertInTablePasportMenu(); else if(tableNumber == 4) insertInTableClientMenu(); else if(tableNumber == 5) insertInTablePhoneNumberMenu(); else if(tableNumber == 6) insertInTableReviewMenu(); break; case 3: if(tableNumber == 1) updateInTableCategoryMenu(); else if(tableNumber == 2) updateInTableProductMenu(); else if(tableNumber == 3) updateInTablePasportMenu(); else if(tableNumber == 4) updateInTableClientMenu();

Page 8: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

else if(tableNumber == 5) updateInTablePhoneNumberMenu(); else if(tableNumber == 6) updateInTableReviewMenu(); break; case 4: if(tableNumber == 1) deleteFromTableCategoryMenu(); else if(tableNumber == 2) deleteFromTableProductMenu(); else if(tableNumber == 3) deleteFromTablePasportMenu(); else if(tableNumber == 4) deleteFromTableClientMenu(); else if(tableNumber == 5) deleteFromTablePhoneNumberMenu(); else if(tableNumber == 6) deleteFromTableReviewMenu(); break; case 5: if(tableNumber == 1) FindInTableCategoryMenu(); else if(tableNumber == 2) FindInTableProductMenu(); else if(tableNumber == 3) FindInTablePasportMenu(); else if(tableNumber == 4) FindInTableClientMenu(); else if(tableNumber == 5) FindInTablePhoneNumberMenu(); else if(tableNumber == 6) FindInTableReviewMenu(); break; case 6: break; default: System.out.println("Incorrect input"); } } catch (NumberFormatException e){ System.out.println("Incorrect input"); } } while (choise != 6); }

//Меню вивдення даних з таблиць public void showTableMenu(int tableNumber){ ResultSet rs; switch (tableNumber) { case 1: rs = model.select_all_from_table_category(); view.show_from_table_category(rs , true); break; case 2: rs = model.select_all_from_table_product(); view.show_from_table_product(rs , true); break; case 3: rs = model.select_all_from_table_pasport(); view.show_from_table_pasport(rs, true); break; case 4: rs = model.select_all_from_table_client();

Page 9: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

view.show_from_table_client(rs, true); break; case 5: rs = model.select_all_from_table_phone_number(); view.show_from_table_phone_number(rs, true); break; case 6: rs = model.select_all_from_table_review(); view.show_from_table_review(rs, true); break; }

int choice = -1; System.out.println("1) To Table menu"); do{ System.out.print("-> "); try{ choice = Integer.parseInt(scanner.nextLine()); if(choice != 1) { System.out.println("Incorrect input"); } }catch (NumberFormatException e) { System.out.println("Incorrect input"); } }while (choice != 1); }

//Меню вставки в таблицю Категорія private void insertInTableCategoryMenu() { String categoryName; System.out.print("Enter Category name: "); categoryName = scanner.nextLine(); model.insert_in_table_category(categoryName); }

//Меню вставки в таблицю Товар private void insertInTableProductMenu() { System.out.print("Enter Product name: "); String productName = scanner.nextLine(); System.out.print("Enter Description: "); String productDescription = scanner.nextLine();

int categoryId = getInt("Enter Category Id: "); int productPrice = getInt("Enter Price: "); int prSpecial = getInt("Enter IsSpecial (0 or 1): "); model.insert_in_table_product(productName,productDescription,categoryId,productPrice , (prSpecial != 0)); }

//Меню вставки в таблицю Паспорт private void insertInTablePasportMenu() { System.out.println("Enter PasCode: "); String pasCode = scanner.nextLine(); System.out.println("Enter Name: "); String name = scanner.nextLine();

Page 10: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

System.out.println("Enter Surname: "); String surname = scanner.nextLine(); java.sql.Date birthDate = getDate("Enter Birth Date(dd/MM/yyyy): "); model.insert_in_table_pasport(name,surname,birthDate, pasCode); }

//Меню вставки в таблицю Клієнт private void insertInTableClientMenu(){ System.out.println("Enter Login: "); String login = scanner.nextLine(); System.out.println("Enter Email: "); String email = scanner.nextLine(); java.sql.Date regDate = getDate("Enter RegDate(dd/MM/yyyy): "); int pasportId = getInt("Enter PasportId: "); model.insert_in_table_client(login,email,regDate,pasportId); }

//Меню вставки в таблицю НомерТелефона private void insertInTablePhoneNumberMenu(){ int clientId = getInt("Enter Client Id: "); System.out.println("Enter Phone Number: "); String phoneNumber = scanner.nextLine(); model.insert_in_table_phone_number(phoneNumber,clientId); }

//Меню вставки в таблицю Відгук private void insertInTableReviewMenu(){ System.out.println("Enter Review text: "); String reviewText = scanner.nextLine(); java.sql.Date wrDate = getDate("Enter WrDate(dd/MM/yyyy): "); int clientId = getInt("Enter Client Id: "); int productId = getInt("Enter Product Id: "); int rate = getInt("Enter Product rate: "); model.insert_in_table_review(reviewText , wrDate, clientId, productId, rate); }

//Меню оновлення даних у таблиці Категорія private void updateInTableCategoryMenu(){ System.out.println("-+-+-+ UpdateMenu +-+-+-"); String categoryNameOld; int choose = -1; do{ System.out.print("Enter Category Name to update: "); categoryNameOld = scanner.nextLine(); ResultSet rs = model.select_by_category_from_table_category(categoryNameOld); try{ if(!rs.isBeforeFirst()){ view.showUpdateMenu1(); choose = Integer.parseInt(scanner.nextLine()); if(choose == 1) return; }else { System.out.println("In db exists this data: "); view.show_from_table_category(rs, false); view.showUpdateMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return;

Page 11: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

} }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); System.out.print("Enter new Category Name: "); String categoryNameNew = scanner.nextLine(); model.update_in_table_category(categoryNameOld, categoryNameNew); }

//Меню оновлення даних у таблиці Товар private void updateInTableProductMenu(){ System.out.println("-+-+-+ UpdateMenu +-+-+-"); String productName; int choose = -1; do{ System.out.print("Enter Product name to update: "); productName = scanner.nextLine(); ResultSet rs = model.select_by_prodName_from_table_product(productName); try { if (!rs.isBeforeFirst()) { view.showUpdateMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_product(rs, false); view.showUpdateMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true);

System.out.print("Enter Description: "); String productDescription = scanner.nextLine(); int categoryId = getInt("Enter Category Id: "); int productPrice = getInt("Enter Price: "); model.update_in_table_product(productName,productDescription,categoryId,productPrice); }

//Меню оновлення даних у таблиці Паспорт private void updateInTablePasportMenu(){ System.out.println("-+-+-+ UpdateMenu +-+-+-"); String pasCode; int choose = -1; do{ System.out.print("Enter PasCode to update: "); pasCode = scanner.nextLine(); ResultSet rs =

Page 12: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

model.select_by_paspCode_from_table_pasport(pasCode); try { if (!rs.isBeforeFirst()) { view.showUpdateMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_pasport(rs, false); view.showUpdateMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); System.out.print("Enter Name: "); String name = scanner.nextLine(); System.out.print("Enter Surname: "); String surname = scanner.nextLine(); java.sql.Date birthDate = getDate("Enter Birth Date(dd/MM/yyyy): "); model.update_in_table_pasport(pasCode,name,surname,birthDate); }

//Меню оновлення даних у таблиці Клієнт private void updateInTableClientMenu(){ System.out.println("-+-+-+ UpdateMenu +-+-+-"); String login; int choose = -1; do{ System.out.print("Enter Login to update: "); login = scanner.nextLine(); ResultSet rs = model.select_by_login_from_table_client(login); try { if (!rs.isBeforeFirst()) { view.showUpdateMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_client(rs, false); view.showUpdateMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); System.out.print("Enter Email: "); String email = scanner.nextLine();

Page 13: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

java.sql.Date regDate = getDate("Enter RegDate(dd/MM/yyyy): ");; model.update_in_table_client(login,email,regDate); }

//Меню оновлення даних у таблиці НомерТелефона private void updateInTablePhoneNumberMenu(){ System.out.println("-+-+-+ UpdateMenu +-+-+-"); String phoneNumber; int choose = -1; do{ System.out.println("Enter Phone Number to update: "); phoneNumber = scanner.nextLine(); ResultSet rs = model.select_by_phoneNum_from_table_phNum(phoneNumber); try { if (!rs.isBeforeFirst()) { view.showUpdateMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_phone_number(rs, false); view.showUpdateMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); int clientId = getInt("Enter Client Id: "); model.update_in_table_phone_number(phoneNumber, clientId); }

//Меню оновлення даних у таблиці Відгук private void updateInTableReviewMenu(){ System.out.println("-+-+-+ UpdateMenu +-+-+-"); int reviewId; int choose = -1; do{ reviewId = getInt("Enter Review Id to update: "); ResultSet rs = model.select_by_revId_from_table_review(reviewId); try { if (!rs.isBeforeFirst()) { view.showUpdateMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_phone_number(rs, false); view.showUpdateMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return;

Page 14: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

} }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); System.out.println("Enter Review text: "); String reviewText = scanner.nextLine(); java.sql.Date wrDate = getDate("Enter WrDate(dd/MM/yyyy): "); int clientId = getInt("Enter Client Id: "); int productId = getInt("Enter Product Id: "); int rate = getInt("Enter Product rate: "); model.update_in_table_review(reviewId,reviewText,wrDate,clientId,productId,rate); }

//Меню видалення даних у таблиці Категорія private void deleteFromTableCategoryMenu(){ System.out.println("-+-+-+ DeleteMenu +-+-+-"); String categoryName; int choose = -1; do{ System.out.print("Enter CategoryName to delete: "); categoryName = scanner.nextLine(); ResultSet rs = model.select_by_category_from_table_category(categoryName); try { if (!rs.isBeforeFirst()) { view.showDeleteMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_category(rs, false); view.showDeleteMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); model.delete_from_table_category(categoryName); }

//Меню видалення даних у таблиці Товар private void deleteFromTableProductMenu(){ System.out.println("-+-+-+ DeleteMenu +-+-+-"); String productName; int choose = -1; do{ System.out.print("Enter ProductyName to delete: "); productName = scanner.nextLine(); ResultSet rs = model.select_by_prodName_from_table_product(productName); try {

Page 15: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

if (!rs.isBeforeFirst()) { view.showDeleteMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_product(rs, false); view.showDeleteMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true);

model.delete_from_table_product(productName); }

//Меню видалення даних у таблиці Паспорт private void deleteFromTablePasportMenu(){ System.out.println("-+-+-+ DeleteMenu +-+-+-"); String pasportCode; int choose = -1; do{ System.out.print("Enter PasportCode to delete: "); pasportCode = scanner.nextLine(); ResultSet rs = model.select_by_paspCode_from_table_pasport(pasportCode); try { if (!rs.isBeforeFirst()) { view.showDeleteMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_pasport(rs, false); view.showDeleteMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); model.delete_from_table_pasport(pasportCode); }

//Меню видалення даних у таблиці Клієнт private void deleteFromTableClientMenu(){ System.out.println("-+-+-+ DeleteMenu +-+-+-"); String login;

Page 16: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

int choose = -1; do{ System.out.print("Enter Client login to delete: "); login = scanner.nextLine(); ResultSet rs = model.select_by_login_from_table_client(login); try { if (!rs.isBeforeFirst()) { view.showDeleteMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_client(rs, false); view.showDeleteMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); model.delete_from_table_client(login); }

//Меню видалення даних у таблиці НомерТелефона private void deleteFromTablePhoneNumberMenu(){ System.out.println("-+-+-+ DeleteMenu +-+-+-"); String phoneNumber; int choose = -1; do{ System.out.print("Enter PhoneNumber to delete: "); phoneNumber = scanner.nextLine(); ResultSet rs = model.select_by_phoneNum_from_table_phNum(phoneNumber); try { if (!rs.isBeforeFirst()) { view.showDeleteMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_phone_number(rs, false); view.showDeleteMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); model.delete_from_table_phone_number(phoneNumber); }

Page 17: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

//Меню видалення даних у таблиці Відгук private void deleteFromTableReviewMenu() { System.out.println("-+-+-+ DeleteMenu +-+-+-"); int reviewId; int choose = -1; do{ reviewId = getInt("Enter Review Id to delete: "); ResultSet rs = model.select_by_revId_from_table_review(reviewId); try { if (!rs.isBeforeFirst()) { view.showDeleteMenu1(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) return; } else { System.out.println("In db exists this data: "); view.show_from_table_review(rs, false); view.showDeleteMenu2(); choose = Integer.parseInt(scanner.nextLine()); if (choose == 1) break; else if (choose == 2) return; } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); }catch (NumberFormatException e) { } }while (true); model.delete_from_table_review(reviewId); }

//Меню пошуку в таблиці Відгук private void FindInTableReviewMenu() { System.out.println("-+-+-+ FindMenu +-+-+-"); int reviewId = getInt("Enter Review Id to find: "); ResultSet rs = model.select_by_revId_from_table_review(reviewId); try { if (rs.isBeforeFirst()){ view.show_from_table_review(rs , false); }else{ System.out.println("This data doesn't exist"); } } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Меню пошуку в таблиці Категорія private void FindInTableCategoryMenu(){ System.out.print("Enter CategoryName to find: "); String categoryName = scanner.nextLine(); ResultSet rs = model.select_by_category_from_table_category(categoryName); try { if (rs.isBeforeFirst()){ view.show_from_table_category(rs , false); }else{ System.out.println("This data doesn't exist"); } } catch (SQLException sql_except){

Page 18: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

sql_except.printStackTrace(); } }

//Меню пошуку в таблиці Товар private void FindInTableProductMenu(){ System.out.print("Enter ProductyName to find: "); String productName = scanner.nextLine(); ResultSet rs = model.select_by_prodName_from_table_product(productName); try { if (rs.isBeforeFirst()){ view.show_from_table_product(rs , false); }else{ System.out.println("This data doesn't exist"); } } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Меню пошуку в таблиці Паспорт private void FindInTablePasportMenu(){ System.out.print("Enter PasportCode to find: "); String pasportCode = scanner.nextLine(); ResultSet rs = model.select_by_paspCode_from_table_pasport(pasportCode); try { if (rs.isBeforeFirst()){ view.show_from_table_pasport(rs , false); }else{ System.out.println("This data doesn't exist"); } } catch (SQLException sql_except){ sql_except.printStackTrace(); }

}

//Меню пошуку в таблиці Клієнт private void FindInTableClientMenu(){ System.out.print("Enter Client login to find: "); String login = scanner.nextLine(); ResultSet rs = model.select_by_login_from_table_client(login); try { if (rs.isBeforeFirst()){ view.show_from_table_client(rs , false); }else{ System.out.println("This data doesn't exist"); } } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Меню пошуку в таблиці НомерТелефона private void FindInTablePhoneNumberMenu(){ System.out.print("Enter PhoneNumber to find: "); String phoneNumber = scanner.nextLine(); ResultSet rs = model.select_by_phoneNum_from_table_phNum(phoneNumber); try {

Page 19: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

if (rs.isBeforeFirst()){ view.show_from_table_review(rs , false); }else{ System.out.println("This data doesn't exist"); } } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Дозволяє отримати int з перевіркою на коректність вводу та демонстрацією тексту. private int getInt(String textToShow) { int result; do { System.out.print(textToShow); try { result = Integer.parseInt(scanner.nextLine()); break; }catch (NumberFormatException e){ System.out.println("Incorrect input. Try again."); } } while (true); return result; }

//Дозволяє отримати Date з перевіркою на коректність вводу та демонстрацією тексту. private java.sql.Date getDate(String textToShow) { SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date date1; String dateString; do { System.out.print(textToShow); try { dateString = scanner.nextLine(); java.util.Date date = formatter.parse(dateString); date1 = new java.sql.Date(date.getTime()); break; }catch (ParseException e){ System.out.println("Incorrect date format. Correct format is (dd/MM/yyyy). Try again"); } }while (true); return date1; }

//Дозволяє отримати Date з String private java.sql.Date getDateFromString(String date) { SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date date1 = null; try { java.util.Date dateutil = formatter.parse(date); date1 = new java.sql.Date(dateutil.getTime()); }catch (ParseException e){ System.out.println("Incorrect date format. Correct format is (dd/MM/yyyy)."); } return date1; }

Page 20: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

//Меню пошуку з 3-х таблиць одночасно private void menuSearchFrom3Table(){ int choice = -1; do { view.showFrom3TableMenu(); try { choice = Integer.parseInt(scanner.nextLine()); switch (choice){ case 1: StaticSearch1(); break; case 2: StaticSearch2(); break; case 3: DynamicSearch(); break; case 4: break; default: System.out.println("Incorrect input"); } } catch (NumberFormatException numberError) { System.out.println("Incorrect input!"); } } while (choice != 4);

}

//Статичний пошук 1 private void StaticSearch1(){ SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date wrDate1 = getDateFromString("01/01/2019"); java.sql.Date wrDate2 = getDateFromString("01/01/2020"); java.sql.Date regDate1 = getDateFromString("01/01/2018"); java.sql.Date regDate2 = getDateFromString("01/01/2020"); ResultSet rs = model.search_from_3_tables(wrDate1 , wrDate2 , regDate1 , regDate2 , true); view.showSearchFrom3Table(rs); }

//Статичний пошук 2 private void StaticSearch2(){ SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date wrDate1 = getDateFromString("01/01/2012"); java.sql.Date wrDate2 = getDateFromString("01/01/2026"); java.sql.Date regDate1 = getDateFromString("01/01/2017"); java.sql.Date regDate2 = getDateFromString("01/01/2020"); ResultSet rs = model.search_from_3_tables(wrDate1 , wrDate2 , regDate1 , regDate2 , false); view.showSearchFrom3Table(rs); }

//Динамічний пошук private void DynamicSearch(){ java.sql.Date wrDate1 = getDate("Enter WrDate1 (dd/MM/yyyy): "); java.sql.Date wrDate2 = getDate("Enter WrDate2 (dd/MM/yyyy): "); java.sql.Date regDate1 = getDate("Enter RegDate1 (dd/MM/yyyy): "); java.sql.Date regDate2 = getDate("Enter RegDate2 (dd/MM/yyyy): "); int isSpecial = getInt("Enter IsSpecialProduct (0 or 1): "); ResultSet rs = model.search_from_3_tables(wrDate1 , wrDate2 , regDate1 , regDate2 , (isSpecial !=0)); view.showSearchFrom3Table(rs); }

//Меню повнотекстового пошуку private void fullTextSearchMenu() { int choise = -1;

Page 21: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

do { view.showFullTextSearchMenu(); try { choise = Integer.parseInt(scanner.nextLine()); if(choise == 1) wordSearchMenu(); else if (choise == 2) phraseSearchMenu(); else{ if(choise !=3) System.out.println("Incorrect input"); } } catch (NumberFormatException numberError) { System.out.println("Incorrect input!"); } } while (choise != 3); }

//Меню повнотекстового пошуку по слову private void wordSearchMenu () { System.out.println("Enter word to search"); String wordToSearch = scanner.nextLine(); ResultSet rs = model.wordSearch(wordToSearch); System.out.println("Word Search Result"); try { if (!rs.isBeforeFirst()){ System.out.println("Nothing was found!"); } else { view.showTextSearchResult(rs); } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); } }

//Меню повнотекстового пошуку по фразі private void phraseSearchMenu () { System.out.println("Enter phrase to search"); String phraseToSearch = scanner.nextLine(); ResultSet rs = model.phraseSearch(phraseToSearch); System.out.println("Phrase Search Result"); try { if (!rs.isBeforeFirst()){ System.out.println("Nothing was found!"); } else { view.showTextSearchResult(rs); } }catch (SQLException sqlExcept){ sqlExcept.printStackTrace(); } }

//Меню рандомної генерації private void RandomGenMenu() { int count = getInt("Enter count of rows to generate in Review: "); Random rnd = new Random(); if(count > 0) { Vector<Integer> productIds = new Vector<Integer>(); Vector<String> productNames = new Vector<String>(); Vector<Integer> clientIds = new Vector<Integer>(); ResultSet rs1 = model.select_id_and_name_from_table_product(); ResultSet rs2 = model.select_id_from_table_client();

Page 22: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

try { while (rs1.next()){ productIds.add(rs1.getInt(1)); productNames.add(rs1.getString(2)); } while (rs2.next()){ clientIds.add(rs2.getInt(1)); } } catch (SQLException e) { e.printStackTrace(); } int prodIdsSize = productIds.size() - 1; int clientIdSize = clientIds.size() - 1; for (; count > 0; count--) { StringBuilder reviewText = new StringBuilder(); StringBuilder wrDateString = new StringBuilder(); int isgood = rnd.nextInt(1); int productId = productIds.get(rnd.nextInt(prodIdsSize)); int clientId = clientIds.get(rnd.nextInt(clientIdSize)); int productRate = 0;

wrDateString.append(rnd.nextInt(11)+1); wrDateString.append('/'); wrDateString.append(rnd.nextInt(11)+1); wrDateString.append('/'); wrDateString.append(rnd.nextInt(20) + 2000);

java.sql.Date wrDate = getDateFromString(wrDateString.toString()); if (rnd.nextBoolean()) { productRate = rnd.nextInt(1)+4; if(rnd.nextBoolean()){ reviewText.append("Цей товар є чудовим!"); }else{ reviewText.append("Товар вразив мене!"); }

if(rnd.nextBoolean()){ reviewText.append(" Працює без проблем."); }else { reviewText.append(" За весь час користування ніяких проблем."); }

if(rnd.nextBoolean()){ if(rnd.nextBoolean()){ reviewText.append( " Рекомендую купувати " + productNames.get(productId) + " !"); }else { reviewText.append(" Повністю виправдовує власну ціну."); } } else { reviewText.append(" " + productNames.get(productId) + " найкращий серед всіх товарів цієї категорії."); }

} else { productRate = rnd.nextInt(2) +1; if(rnd.nextBoolean()){ reviewText.append(" Жахливий товар."); } else {

Page 23: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

reviewText.append(" Навіщо я його купував!"); }

if(rnd.nextBoolean()){ reviewText.append(" " + productNames.get(productId) + " не рекомендую покупати!"); } else { reviewText.append(" Зламався через пару днів."); } } model.insert_in_table_review(reviewText.toString() , wrDate , clientId, productId, productRate); } } }}

View

package org.lab2.view;

import java.sql.ResultSet;import java.sql.SQLException;

public class View { //Функції самі себе добре описуют у цьому класі public void show_from_table_category(ResultSet rs, boolean showTitle) { if(showTitle) { System.out.println("-------------------------------------"); System.out.println("TABLE Category"); } try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("CtID: " + rs.getInt(1)); System.out.println("CtName: " + rs.getString(2)); } System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void show_from_table_product(ResultSet rs , boolean showTitle) { if(showTitle) { System.out.println("-------------------------------------"); System.out.println("TABLE Product"); } try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("PrId: " + rs.getInt(1)); System.out.println("PrName: " + rs.getString(2)); System.out.println("PrDescription: " + rs.getString(3)); System.out.println("PrCategory: " + rs.getInt(4)); System.out.println("PrPrice: " + rs.getString(5)); System.out.println("PrSpecial: " + rs.getBoolean(6));

Page 24: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

} System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void show_from_table_pasport(ResultSet rs, boolean showTitle) { if(showTitle) { System.out.println("-------------------------------------"); System.out.println("TABLE Pasport"); } try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("PasId: " + rs.getInt(1)); System.out.println("PasName: " + rs.getString(2)); System.out.println("PasSurname: " + rs.getString(3) ); System.out.println("PasBirthDate: " + rs.getString(4)); System.out.println("PasCode: " + rs.getString(5)); } System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void show_from_table_client(ResultSet rs, boolean showTitle) { if(showTitle) { System.out.println("-------------------------------------"); System.out.println("TABLE Client"); } try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("ClId: " + rs.getInt(1)); System.out.println("ClLogin: " + rs.getString(2)); System.out.println("ClEmail: " + rs.getString(3) ); System.out.println("ClRegDate: " + rs.getString(4)); System.out.println("ClPasportId: " + rs.getInt(5)); } System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void show_from_table_phone_number(ResultSet rs , boolean showTitle) { if(showTitle) { System.out.println("-------------------------------------"); System.out.println("TABLE PhoneNumber"); } try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("PhId: " + rs.getInt(1)); System.out.println("PhClientId: " + rs.getString(2)); System.out.println("PhNumber: " + rs.getString(3) );

Page 25: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

} System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void show_from_table_review(ResultSet rs , boolean showTitle) { if(showTitle){ System.out.println("-------------------------------------"); System.out.println("TABLE Review"); } try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("RevId: " + rs.getInt(1)); System.out.println("RevText: " + rs.getString(2)); System.out.println("RevWrDate: " + rs.getString(3) ); System.out.println("RevAuthor: " + rs.getInt(4)); System.out.println("RevProductId: " + rs.getInt(5)); System.out.println("RevProdRate: " + rs.getInt(6)); } System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void showMainMenu() { System.out.println("-+-+-+-+- Main Menu -+-+-+-+-"); System.out.println("Choose table or operation: "); System.out.println("1) Table Category"); System.out.println("2) Table Product"); System.out.println("3) Table Pasport"); System.out.println("4) Table Client"); System.out.println("5) Table PhoneNumber"); System.out.println("6) Table Review"); System.out.println("7) Search from 3 table"); System.out.println("8) FTS"); System.out.println("9) Random gen"); System.out.println("10) Exit"); System.out.print("-> "); }

public void showMenuTableOperations(String tableName){ System.out.println("-+-+-+-+- Table " + tableName + " Menu -+-+-+-+-" ); System.out.println("1) Show"); System.out.println("2) Insert"); System.out.println("3) Update"); System.out.println("4) Delete"); System.out.println("5) Find"); System.out.println("6) To Main Menu");

System.out.print("-> "); }

public void showSearchFrom3Table(ResultSet rs){ try{ while(rs.next()){ System.out.println("-----------------------------------");

Page 26: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

System.out.println("PrId: " + rs.getInt(1)); System.out.println("PrName: " + rs.getString(2)); System.out.println("PrDescription: " + rs.getString(3)); System.out.println("PrCategory: " + rs.getInt(4)); System.out.println("PrPrice: " + rs.getString(5)); System.out.println("PrSpecial: " + rs.getBoolean(6)); System.out.println("RevId: " + rs.getInt(7)); System.out.println("RevText: " + rs.getString(8)); System.out.println("RevWrDate: " + rs.getString(9) ); System.out.println("RevAuthor: " + rs.getInt(10)); System.out.println("RevProductId: " + rs.getInt(11)); System.out.println("RevProdRate: " + rs.getInt(12)); System.out.println("ClId: " + rs.getInt(13)); System.out.println("ClLogin: " + rs.getString(14)); System.out.println("ClEmail: " + rs.getString(15) ); System.out.println("ClRegDate: " + rs.getString(16)); System.out.println("ClPasportId: " + rs.getInt(17)); } }catch (SQLException sql_except){ sql_except.printStackTrace(); } }

public void showFrom3TableMenu(){ System.out.println("-+-+-+ Search From 3 Table +-+-+-"); System.out.println("1) Static search 1"); System.out.println("2) Static search 2"); System.out.println("3) Dynamic search"); System.out.println("4) To main menu"); System.out.print("-> "); }

public void showUpdateMenu1(){ System.out.println("This data doesn't exist"); System.out.println("1) Stop operation"); System.out.println("Anything else - Try again"); System.out.print("-> "); }

public void showUpdateMenu2(){ System.out.println("1) Update"); System.out.println("2) Stop operation"); System.out.println("Anything else - Choose another"); System.out.print("-> "); }

public void showDeleteMenu1(){ System.out.println("This data doesn't exist"); System.out.println("1) Stop operation"); System.out.println("Anything else - Try again"); System.out.print("-> "); }

public void showDeleteMenu2(){ System.out.println("1) Delete"); System.out.println("2) Stop operation"); System.out.println("Anything else - Choose another"); System.out.print("-> "); }

public void showFullTextSearchMenu() { System.out.println("1) Word search from review texts");

Page 27: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

System.out.println("2) Phrase search from review texts"); System.out.println("3) To main menu"); System.out.print("-> "); }

public void showTextSearchResult(ResultSet rs) { try { while (rs.next()) { System.out.println("-----------------------------------"); System.out.println("RevId: " + rs.getString(1)); System.out.println("RevText: " + rs.getString(2)); } System.out.println("-----------------------------------"); }catch (SQLException sql_except){ sql_except.printStackTrace(); } }}

Model

package org.lab2.model;

import javax.print.DocFlavor;import java.security.interfaces.RSAKey;import java.sql.*;

public class Model{ Connection dbConnection;

// Створює підключення до БазиДаних public void make_connection() { try { Class.forName("org.postgresql.Driver"); String URL = "jdbc:postgresql://localhost:5434/InternetShop2"; dbConnection = DriverManager.getConnection(URL,"postgres","qwerty"); }catch (Exception ex){ ex.printStackTrace(); } System.out.println("Connection has been successfully created!"); }

// Виконує вставку в таблицю Категорія public void insert_in_table_category(String categoryName) { try { String sqlInsert = "INSERT INTO \"Category\" (\"CtName\") VALUES ( ?)"; PreparedStatement prpInsertStmt = dbConnection.prepareStatement(sqlInsert); prpInsertStmt.setString(1,categoryName); prpInsertStmt.executeUpdate(); System.out.println("Insertion has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); }

}

Page 28: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

//Виконує вставку в таблицю Товар public void insert_in_table_product(String prName, String prDescription, int prCategory, int prPrice , boolean prSpecial) { try { String sqlInsert = "INSERT INTO \"Product\" (\"PrName\" , \"PrDescription\", \"PrCategory\", \"PrPrice\", \"PrSpecial\") " +"VALUES (?,?,?,?,?)"; PreparedStatement prpInsertStmt = dbConnection.prepareStatement(sqlInsert); prpInsertStmt.setString(1,prName); prpInsertStmt.setString(2,prDescription); prpInsertStmt.setInt(3,prCategory); prpInsertStmt.setInt(4,prPrice); prpInsertStmt.setBoolean(5,prSpecial); prpInsertStmt.executeUpdate(); System.out.println("Insertion has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує вставку в таблицю Паспорт public void insert_in_table_pasport(String pasName, String pasSurname, Date pasBirthDate, String pasCode) { try { String sqlInsert = "INSERT INTO \"Pasport\" (\"PasName\" , \"PasSurname\", \"PasBirthDate\", \"PasCode\") " +"VALUES (?,?,?,?)"; PreparedStatement prpInsertStmt = dbConnection.prepareStatement(sqlInsert); prpInsertStmt.setString(1,pasName); prpInsertStmt.setString(2,pasSurname); prpInsertStmt.setDate(3,pasBirthDate); prpInsertStmt.setString(4,pasCode); prpInsertStmt.executeUpdate(); System.out.println("Insertion has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує вставку в таблицю Клієнт public void insert_in_table_client(String clLogin, String clEmail, Date clRegDate, int clPasportId) { try { String sqlInsert = "INSERT INTO \"Client\" (\"ClLogin\" , \"ClEmail\", \"ClRegDate\", \"ClPasportId\") " +"VALUES (?,?,?,?)"; PreparedStatement prpInsertStmt = dbConnection.prepareStatement(sqlInsert); prpInsertStmt.setString(1,clLogin); prpInsertStmt.setString(2,clEmail); prpInsertStmt.setDate(3,clRegDate); prpInsertStmt.setInt(4,clPasportId); prpInsertStmt.executeUpdate(); System.out.println("Insertion has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); }

Page 29: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

}

//Виконує вставку в таблицю НомерТелефона public void insert_in_table_phone_number(String phNumber, int phClientId) { try { String sqlInsert = "INSERT INTO \"PhoneNumber\" (\"PhNumber\" , \"PhClientId\") " +"VALUES (?,?)"; PreparedStatement prpInsertStmt = dbConnection.prepareStatement(sqlInsert); prpInsertStmt.setString(1,phNumber); prpInsertStmt.setInt(2,phClientId); prpInsertStmt.executeUpdate(); System.out.println("Insertion has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує вставку в таблицю Відгук public void insert_in_table_review(String revText,Date revWrDate, int revAuthor, int revProductid,int revProdRate) { try { String sqlInsert = "INSERT INTO \"Review\" (\"RevText\" , \"RevWrDate\", \"RevAuthor\", \"RevProductId\", \"RevProdRate\") " +"VALUES (?,?,?,?,?)"; PreparedStatement prpInsertStmt = dbConnection.prepareStatement(sqlInsert); prpInsertStmt.setString(1,revText); prpInsertStmt.setDate(2,revWrDate); prpInsertStmt.setInt(3,revAuthor); prpInsertStmt.setInt(4,revProductid); prpInsertStmt.setInt(5,revProdRate); prpInsertStmt.executeUpdate(); System.out.println("Insertion has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Повертає ResultSelect з всіма кортежками з таблиці Категорія public ResultSet select_all_from_table_category() { ResultSet rs = null; try { String sqlSelectAll = "SELECT * FROM \"Category\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з всіма кортежками з таблиці Товар public ResultSet select_all_from_table_product() { ResultSet rs = null; try { String sqlSelectAll = "SELECT * FROM \"Product\"";

Page 30: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з всіма кортежками з таблиці Паспорт public ResultSet select_all_from_table_pasport() { ResultSet rs = null; try { String sqlSelectAll = "SELECT * FROM \"Pasport\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з всіма кортежками з таблиці Клієнт public ResultSet select_all_from_table_client() { ResultSet rs = null; try { String sqlSelectAll = "SELECT * FROM \"Client\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з всіма кортежками з таблиці НомерТелефона public ResultSet select_all_from_table_phone_number() { ResultSet rs = null; try { String sqlSelectAll = "SELECT * FROM \"PhoneNumber\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з всіма кортежками з таблиці Відгук public ResultSet select_all_from_table_review() { ResultSet rs = null; try { String sqlSelectAll = "SELECT * FROM \"Review\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs;

Page 31: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

}

//Повертає ResultSelect з кортежами , де CtName = category , з таблиці Категорія public ResultSet select_by_category_from_table_category(String category){ ResultSet rs = null; try { String select = "SELECT * FROM \"Category\" WHERE \"CtName\" = ?"; PreparedStatement prpSelectStmt = dbConnection.prepareStatement(select); prpSelectStmt.setString(1,category); rs = prpSelectStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з кортежами , де PrName = product , з таблиці Товар public ResultSet select_by_prodName_from_table_product(String product){ ResultSet rs = null; try{ String select = "SELECT * FROM \"Product\" WHERE \"PrName\" = ?"; PreparedStatement prpSelectStmt = dbConnection.prepareStatement(select); prpSelectStmt.setString(1,product); rs = prpSelectStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з кортежами , де PasCode = paspCode , з таблиці Паспорт public ResultSet select_by_paspCode_from_table_pasport(String paspCode){ ResultSet rs = null; try{ String select = "SELECT * FROM \"Pasport\" WHERE \"PasCode\" = ?"; PreparedStatement prpSelectStmt = dbConnection.prepareStatement(select); prpSelectStmt.setString(1,paspCode); rs = prpSelectStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з кортежами , де ClLogin = login , з таблиці Клієнт public ResultSet select_by_login_from_table_client(String login){ ResultSet rs = null; try{ String select = "SELECT * FROM \"Client\" WHERE \"ClLogin\" = ?"; PreparedStatement prpSelectStmt = dbConnection.prepareStatement(select); prpSelectStmt.setString(1,login);

Page 32: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

rs = prpSelectStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з кортежами , де PhNumber = phNum , з таблиці НомерТелефона public ResultSet select_by_phoneNum_from_table_phNum(String phNum){ ResultSet rs = null; try{ String select = "SELECT * FROM \"PhoneNumber\" WHERE \"PhNumber\" = ?"; PreparedStatement prpSelectStmt = dbConnection.prepareStatement(select); prpSelectStmt.setString(1,phNum); rs = prpSelectStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з кортежами , де RevId = revId , з таблиці Відгук public ResultSet select_by_revId_from_table_review(int revId){ ResultSet rs = null; try{ String select = "SELECT * FROM \"Review\" WHERE \"RevId\" = ?"; PreparedStatement prpSelectStmt = dbConnection.prepareStatement(select); prpSelectStmt.setInt(1,revId); rs = prpSelectStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з id та name з таблиці Товар public ResultSet select_id_and_name_from_table_product(){ ResultSet rs = null; try { String sqlSelectAll = "SELECT \"PrId\", \"PrName\" FROM \"Product\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSelect з id з таблиці Клієнт public ResultSet select_id_from_table_client() { ResultSet rs = null; try { String sqlSelectAll = "SELECT \"ClId\" FROM \"Client\""; Statement statement = dbConnection.createStatement(); rs = statement.executeQuery(sqlSelectAll); }catch (SQLException sql_except){ sql_except.printStackTrace();

Page 33: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

} return rs; }

//Виконує оновлення даних в таблиці Категорія , де CtName = ctName public void update_in_table_category(String ctName, String ctNameNew){ try { String sqlUpdate = "UPDATE \"Category\" SET \"CtName\" = ? WHERE \"CtName\" = ?"; PreparedStatement prpUpdateStmt = dbConnection.prepareStatement(sqlUpdate); prpUpdateStmt.setString(1,ctNameNew); prpUpdateStmt.setString(2,ctName); prpUpdateStmt.executeUpdate(); System.out.println("Update of CtName " + ctName + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує оновлення даних в таблиці Товар , де PrName = prName public void update_in_table_product(String prName, String prDescription, int prCategory, int prPrice){ try { String sqlUpdate = "UPDATE \"Product\" SET \"PrDescription\" = ?, \"PrCategory\" = ?, \"PrPrice\" = ? WHERE \"PrName\" = ?"; PreparedStatement prpUpdateStmt = dbConnection.prepareStatement(sqlUpdate); prpUpdateStmt.setString(1,prDescription); prpUpdateStmt.setInt(2,prCategory); prpUpdateStmt.setInt(3,prPrice); prpUpdateStmt.setString(4,prName); prpUpdateStmt.executeUpdate(); System.out.println("Update of PrName " + prName + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує оновлення даних в таблиці Паспорт , де PasCode = pasCode public void update_in_table_pasport(String pasCode, String pasName, String pasSurname, Date pasBirthDate){ try { String sqlUpdate = "UPDATE \"Pasport\" SET \"PasName\" = ?, \"PasSurname\" = ?, \"PasBirthDate\" = ? WHERE \"PasCode\" = ?"; PreparedStatement prpUpdateStmt = dbConnection.prepareStatement(sqlUpdate); prpUpdateStmt.setString(1,pasName); prpUpdateStmt.setString(2,pasSurname); prpUpdateStmt.setDate(3,pasBirthDate); prpUpdateStmt.setString(4,pasCode); prpUpdateStmt.executeUpdate(); System.out.println("Update of PasCode " + pasCode + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує оновлення даних в таблиці Клієнт , де ClLogin = clLogin

Page 34: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

public void update_in_table_client(String clLogin, String clEmail, Date clRegDate){ try { String sqlUpdate = "UPDATE \"Client\" SET \"ClEmail\" = ?, \"ClRegDate\" = ? WHERE \"ClLogin\" = ?"; PreparedStatement prpUpdateStmt = dbConnection.prepareStatement(sqlUpdate); prpUpdateStmt.setString(1,clEmail); prpUpdateStmt.setDate(2,clRegDate); prpUpdateStmt.setString(3,clLogin); prpUpdateStmt.executeUpdate(); System.out.println("Update of ClLogin " + clLogin + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує оновлення даних в таблиці НомерТелефона , де PhNumber = phNumber public void update_in_table_phone_number(String phNumber, int phClientId){ try { String sqlUpdate = "UPDATE \"PhoneNumber\" SET \"PhClientId\" = ? WHERE \"PhNumber\" = ?"; PreparedStatement prpUpdateStmt = dbConnection.prepareStatement(sqlUpdate); prpUpdateStmt.setInt(1,phClientId); prpUpdateStmt.setString(2,phNumber); prpUpdateStmt.executeUpdate(); System.out.println("Update of PhNumber " + phNumber + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує оновлення даних в таблиці Відгук , де RevId = revId public void update_in_table_review(int revId, String revText, Date revWrDate, int revAuthor, int revProductId, int revProdRate){ try { String sqlUpdate = "UPDATE \"Review\" SET \"RevText\" = ?, \"RevWrDate\" = ?, \"RevAuthor\" = ?, \"RevProductId\" = ?, \"RevProdRate\" = ? WHERE \"RevId\" = ?"; PreparedStatement prpUpdateStmt = dbConnection.prepareStatement(sqlUpdate); prpUpdateStmt.setString(1,revText); prpUpdateStmt.setDate(2,revWrDate); prpUpdateStmt.setInt(3,revAuthor); prpUpdateStmt.setInt(4,revProductId); prpUpdateStmt.setInt(5,revProdRate); prpUpdateStmt.setInt(6,revId); prpUpdateStmt.executeUpdate(); System.out.println("Update of RevId " + revId + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує видалення по сatName з таблиці Категорія public void delete_from_table_category(String catName){

Page 35: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

try { String sqlDelete = "DELETE FROM \"Category\" WHERE \"CtName\" = ?"; PreparedStatement prpDeleteStmt = dbConnection.prepareStatement(sqlDelete); prpDeleteStmt.setString(1,catName); prpDeleteStmt.executeUpdate(); System.out.println("Delete of CtName " + catName + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує видалення по prodName з таблиці Товар public void delete_from_table_product(String prodName){ try { String sqlDelete = "DELETE FROM \"Product\" WHERE \"PrName\" = ?"; PreparedStatement prpDeleteStmt = dbConnection.prepareStatement(sqlDelete); prpDeleteStmt.setString(1,prodName); prpDeleteStmt.executeUpdate(); System.out.println("Delete of PrName " + prodName + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує видалення по pasCode з таблиці Паспорт public void delete_from_table_pasport(String pasCode){ try { String sqlDelete = "DELETE FROM \"Pasport\" WHERE \"PasCode\" = ?"; PreparedStatement prpDeleteStmt = dbConnection.prepareStatement(sqlDelete); prpDeleteStmt.setString(1,pasCode); prpDeleteStmt.executeUpdate(); System.out.println("Delete of PasCode " + pasCode + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує видалення по login з таблиці Клієнт public void delete_from_table_client(String login){ try { String sqlDelete = "DELETE FROM \"Client\" WHERE \"ClLogin\" = ?"; PreparedStatement prpDeleteStmt = dbConnection.prepareStatement(sqlDelete); prpDeleteStmt.setString(1,login); prpDeleteStmt.executeUpdate(); System.out.println("Delete of ClLogin " + login + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

Page 36: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

//Виконує видалення по phoneNumber з таблиці НомерТелефона public void delete_from_table_phone_number(String phoneNumber){ try { String sqlDelete = "DELETE FROM \"PhoneNumber\" WHERE \"PhNumber\" = ?"; PreparedStatement prpDeleteStmt = dbConnection.prepareStatement(sqlDelete); prpDeleteStmt.setString(1, phoneNumber); prpDeleteStmt.executeUpdate(); System.out.println("Delete of PhNumber " + phoneNumber + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Виконує видалення по revId з таблиці Відгук public void delete_from_table_review(int revId){ try { String sqlDelete = "DELETE FROM \"Review\" WHERE \"RevId\" = ?"; PreparedStatement prpDeleteStmt = dbConnection.prepareStatement(sqlDelete); prpDeleteStmt.setInt(1,revId); prpDeleteStmt.executeUpdate(); System.out.println("Delete of RevId " + revId + " has been successfully maden!"); } catch (SQLException sql_except){ sql_except.printStackTrace(); } }

//Повертає ResultSet з об'єднанням кортежів з таблиці Товар , Відгук та Клієнт , що відповідють параметрам пошуку public ResultSet search_from_3_tables(Date dateWr1, Date dateWr2 , Date dateReg1 , Date dateReg2 , boolean prSpecial){ ResultSet rs = null; try{ String sqlSearch = "SELECT * FROM \"Product\" pr INNER JOIN \"Review\" rev on pr.\"PrId\" = rev.\"RevProductId\"" + "INNER JOIN \"Client\" cl on rev.\"RevAuthor\" = cl.\"ClId\"" +"WHERE (\"RevWrDate\" between ? and ? ) and (\"ClRegDate\" between ? and ?) and \"PrSpecial\" = ?"; PreparedStatement prpSearchStmt = dbConnection.prepareStatement(sqlSearch); prpSearchStmt.setDate(1,dateWr1); prpSearchStmt.setDate(2,dateWr2); prpSearchStmt.setDate(3, dateReg1); prpSearchStmt.setDate(4, dateReg2); prpSearchStmt.setBoolean(5 ,prSpecial); rs = prpSearchStmt.executeQuery(); } catch (SQLException sql_except){ sql_except.printStackTrace(); } return rs; }

//Повертає ResultSet з RevId та опрацьованим полем RevText з таблиці Відгук , де в RevText знайдено відповідне слово public ResultSet wordSearch(String word) { ResultSet rs = null; try{

Page 37: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

String sqlWordSearch = "SELECT \"RevId\" , ts_headline(\"RevText\",q, 'StartSel=<!>, StopSel=<!>') "+ "FROM \"Review\" , to_tsquery(?) as q " + "WHERE to_tsvector(\"RevText\") @@ q"; PreparedStatement prpSearchStmt = dbConnection.prepareStatement(sqlWordSearch); prpSearchStmt.setString(1 , word); rs = prpSearchStmt.executeQuery(); } catch (SQLException sqlExcept) { sqlExcept.printStackTrace(); } return rs; }

//Повертає ResultSet з RevId та опрацьованим полем RevText , де в RevText знайдена відповідна фраза public ResultSet phraseSearch(String phrase) { ResultSet rs = null; try{ String sqlWordSearch = "SELECT \"RevId\" , ts_headline(\"RevText\",q, 'StartSel=<!>, StopSel=<!>') "+ "FROM \"Review\" , phraseto_tsquery(?) as q " + "WHERE to_tsvector(\"RevText\") @@ q"; PreparedStatement prpSearchStmt = dbConnection.prepareStatement(sqlWordSearch); prpSearchStmt.setString(1 , phrase); rs = prpSearchStmt.executeQuery(); } catch (SQLException sqlExcept) { sqlExcept.printStackTrace(); } return rs; }}

Page 38: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби

Скріншот результатів виконання операції вилучення

Спроба вилучення кортежу на який є посилання

Вдале видалення і деомонстрація результату вилучення

Page 39: scs.kpi.uascs.kpi.ua/sites/default/files/yermolenko_denys_kv-73_lr_2…  · Web viewЛабораторна робота №2. з дисципліни « Бази даних. і засоби