Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ імені Ігоря Сікорського»
ФАКУЛЬТЕТ ПРИКЛАДНОЇ МАТЕМАТИКИ
Кафедра системного програмування та спеціалізованих комп’ютерних систем
Лабораторна робота №2
з дисципліни«Бази даних і засоби управління»
Виконав: студент ІII курсу
ФПМ групи КВ-73
Єрмоленко Денис Вадимович
Перевірив(ла):
Київ – 2019
Ознайомлення з базовими операціями СУБД PostgreSQL
Мета роботи: здобуття практичних навичок проектування та побудови реляційних баз даних та створення прикладних програм з базами даних
Завдання роботи полягає у наступному: 1. Виконати нормалізацію бази даних, яка була створена у лабораторній роботі №1,
до третьої нормальної форми (3НФ);2. Реалізувати функціональні вимоги, наведені нижче.
Функціональні вимоги: 1. Реалізувати внесення, редагування та вилучення даних у базі засобами
консольного інтерфейсу;2. Передбачити автоматичне пакетне генерування «рандомізованих» даних у базі; 3. Забезпечити реалізацію пошуку за двома-трьома атрибутами з двох сутностей
одночасно: для числових атрибутів – у рамках діапазону, для рядкових – як перелічення, для логічного типу – значення True/False, для дат – у рамках діапазону дат;
4. Забезпечити реалізацію повнотекстового пошуку за будь-яким текстовим атрибутом бази даних засобами PostgreSQL з виділенням знайденого фрагменту.
Вимоги до інтерфейсу користувача:1. Використовувати консольний інтерфейс користувача.
Варіант 7
Пошук за атрибутами має відбуватися по логічному типу та діапазону дат.
Повнотекстовий пошук з обов’язковим входженням цілого слова та по цілій фразі.
Нормалізована модель даних
Таблиця 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НФ та кожний її атрибут нетранзитивно залежить від первинного ключа
Опис програми
Програма створена за патерном MVC (Model-View-Controller). Складається відповідно з класів Model , View та Controller.
У класі Model реалізовані функції , що здійснюють SQL запити до Бази Даних, а також функція, що виконує з’єднання з БД.
У класі View реалізовані функції, що використовуються для відображення в консоль пунктів меню, виводу даних з таблиць, тобто функції, що відображують певну інформацію в консоль.
У класі Controller реалізовані функції для відповідних меню та допоміжні функції.
Опис структури меню програми
Меню програми можна розглядати як її концептуальну модель
Посилання для навігації по програмі
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 Функція пошуку за фразою
Лістинг програми
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)
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();
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();
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();
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;
} }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 =
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();
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;
} }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 {
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;
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); }
//Меню видалення даних у таблиці Відгук 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){
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 {
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; }
//Меню пошуку з 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;
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();
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 {
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));
} 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) );
} 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("-----------------------------------");
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");
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(); }
}
//Виконує вставку в таблицю Товар 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(); }
}
//Виконує вставку в таблицю НомерТелефона 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\"";
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;
}
//Повертає 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);
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();
} 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
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){
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(); } }
//Виконує видалення по 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{
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; }}
Скріншот результатів виконання операції вилучення
Спроба вилучення кортежу на який є посилання
Вдале видалення і деомонстрація результату вилучення