import java.sql.*; import java.util.ArrayList; public class DataAccess { private Connection connection; public void getConnection () { connection = MyConnection.getConnection(); } public void closeConn () { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } public void prepare () { String query = "CREATE TABLE student (\n" + " ID INT NOT NULL AUTO_INCREMENT,\n" + " FIRSTNAME CHAR(30) NOT NULL,\n" + " SECONDNAME CHAR(50) NOT NULL,\n" + " BIRTHDAY CHAR(10) NOT NULL,\n" + " MARK INT NOT NULL ,\n" + " PRIMARY KEY (id)\n" + «)"; //sql запит для створення таблиці Учень у бд із зазначеними параметрами Statement statement = null; try { statement = connection.createStatement(); //створення запиту statement.executeQuery(query); //запуск запиту } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } public void clear () { String query1 = "DROP TABLE student"; //sql запит для видалення таблиці Statement statement = null; try { statement = connection.createStatement(); //створення запиту statement.executeQuery(query1); //запуск запиту } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } public ArrayList selectAll () { String query = "SELECT * FROM student"; //sql запит Statement statement = null; ArrayList students = new ArrayList<>();//створення колекції об'єктів типу Student try { statement = connection.createStatement(); //створення запиту ResultSet rs = statement.executeQuery(query);//генерування результуючого об'єкту //поки є наступний елемент while (rs.next()) { int id = rs.getInt(1);//отримання першого параметра - id String f = rs.getString(2); //отримання другого параметра - first name String s = rs.getString(3); //отримання третього параметра - second name String b = rs.getString(4); //отримання четвертого параметра - birthday int m = rs.getInt(5); //отримання п'ятого параметра - mark Student tempSt = new Student(f, s, b, m); //створення об'єкту student tempSt.setId(id); students.add(tempSt); //додавання поточного об'єкта до колекції } } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } return students; } public int insertStudent (Student student) { String query = "INSERT INTO student (FIRSTNAME, SECONDNAME, BIRTHDAY, MARK) VALUES (?, ?, ?, ?)"; //sql запит PreparedStatement statement = null; int id = -1; try { statement = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS); //створення запиту з параметром, що дозволить отримати присвоєне id statement.setString(1, student.getFirstName()); //вставлення першого параметра у запит statement.setString(2, student.getSecondName()); //вставлення другого параметра у запит statement.setString(3, student.getBirthday()); //вставлення третього параметра у запит statement.setInt(4, student.getMark()); //встановлення четветого параметра у запит statement.executeUpdate(); //запуск запита ResultSet rs = statement.getGeneratedKeys(); //отримання об'єкта з присвоєним id if (rs.next()){ id=rs.getInt(1); } } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } return id; } public void deleteStudent (int id) { String query = "DELETE FROM student WHERE id = ?"; //sql запит PreparedStatement statement = null; try { statement = connection.prepareStatement(query); //створення запиту statement.setInt(1, id); //вставлення параметру у запит statement.execute(); //запуск запиту } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } public void updateBirthday (Student student, String newDate) { String query = "UPDATE student SET BIRTHDAY=? WHERE FIRSTNAME=? AND SECONDNAME=?"; //створення sql запиту для встановлення значення дати народження у значення, за заданними параметрами PreparedStatement statement = null; try { statement = connection.prepareStatement(query); //створення запиту statement.setString(1, newDate); //встановлення параметру дати statement.setString(2, student.getFirstName()); //встановлення імені statement.setString(3, student.getSecondName()); //встановлення прізвища statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } } public ArrayList getByMark (int mark) { String query = "SELECT * FROM student WHERE MARK = ?"; //sql запит із параметром оцінка PreparedStatement statement = null; ArrayList students = new ArrayList<>(); //колекція для збереження отриманих студентів try { statement = connection.prepareStatement(query); //створення запиту statement.setInt(1, mark); //вставлення параметру у запит - оцінку, по якій буде відбуватися пошук ResultSet rs = statement.executeQuery(); //генерування результуючого об'єкту //перебір отриманних об'єктів в результуючому об'єкті while (rs.next()) { Student tempSt = new Student(rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5)); //створення об'єкту student з отриманними параметрами tempSt.setId(rs.getInt(1)); students.add(tempSt); //додавання студенту до колекції } statement.execute(); } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } return students; } public Student getByID (int id) { String query = "SELECT * FROM student WHERE id = ?"; PreparedStatement statement = null; Student student = null; try { statement = connection.prepareStatement(query); //створення запиту statement.setInt(1, id); //вставлення параметру у запит sql ResultSet rs = statement.executeQuery(); //створення результуючого об'єкту //якщо є декілька таких об'єктів, то беремо останній while (rs.next()) { student = new Student(rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5)); student.setId(rs.getInt(1)); } statement.execute(); } catch (SQLException e) { e.printStackTrace(); } finally { try { statement.close(); } catch (SQLException e) { e.printStackTrace(); } } return student; } }