Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка КР.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
185.34 Кб
Скачать

6. Робота із реляційними базами даних

Робота із реляційними базами даних за допомогою мови SQL у java базується на технології JDBC (Java Database Connectivity) – галузевий стандарт для впровадження незалежного зв’язку між мовою Java та базами даних. JDBC надає користувачу об’єктно-орієнтований програмний інтерфейс для з’єднання з БД, виконання SQL запитів та отримання результатів їх виконання. Загальні класи JDBC знаходяться у пакетах java.sql та javaх.sql. Крім них до проекту необхідно додати архів із класами (JDBC - драйверами), які реалізують з’єднання та роботу із конкретною СКБД. Їх найчастіше можна знайти на сайті розробника СКБД.

6.1. Робота із базовими функціями

Послідовність дій при використанні JDBC така:

  1. Завантаження класу драйвера бази даних.

Починаючи з версії JDBC 4.0 драйвер автоматично завантажується на кроці 2, тобто при виклику метода getConnection() классу DriverManager.

Приклад:

String driverName = "org.gjt.mm.mysql.Driver";//для СКБД MySQL

або

Class.forName("org.gjt.mm.mysql.Driver");

2. Встановленнязєднання

Для встановлення з’єднання з базою даних потрібно викликати статичний метод getConnection() классу DriverManager, куди як параметри передаються URL БД, що складається з типу й адреси знаходження бази, логін та пароль користувача БД.

Приклад:

Connection conn = (Connection) DriverManager.getConnection( "jdbc:mysql://127.0.0.1:3306/first_db" , "root" , "password" );

3. Створення об’єкта для передачі запитів

Об’єкт з’єднання має перевантажені методи createStatement() та prepareStatement(). Перший призначений для виконання запитів без параметрів, другий – для виконання параметризованих запитів. Параметризовані запити доцільно використовувати, якщо очікується значна кількість схожих запитів, які відрізняються деяким параметром, наприклад, ідентифікатором. При цьому запит на сервері БД компілюватиметься лише один раз і у відкомпільованому вигляді зберігатиметься в кеші на сервері БД. При виконанні подальших схожих запитів, повторної компіляції не відбуватиметься, а просто буде знаходитись відкомпільований запит у кеші та виконуватися із новими параметрами.

Приклад:

Statement query = сonn.createStatement();

PreparedStatement prepQuery = myConnection.prepareStatement(

"select * from student where course = ?" );

4. Виконання запиту

Якщо використовувався об’єкт типу Statement, то виконання запиту здійснюється за допомогою метода executeQuery(). Результатом є об’єкт ResultSet, який фактично є ітератором, що дозволяє отримати результати запиту. Для виконання параметризованого запиту необхідно передати параметри. Для цього у об’єкту типу PreparedStatement є набір методів (setInt(), setString(), setDate() тощо). Коли параметри задано, то теж викликається метод executeQuery().

Приклад:

ResultSet rs = query.executeQuery("select * from student");

prepQuery. setInt(1,4);

ResultSet result = prepQuery.executeQuery();

Для виконання запитів, які не повертають результату використовується метод executeUpdate(). Якщо виконувалась sql-команда INSERT, то можна отримати значення штучного ідентифікатора, згенерованого СУБД за допомогою метода getGeneratedKeys().

Приклад:

PreparedStatement query=myConnection.prepareStatement("insert into student (name , course) values ( ? , ? )" , Statement.RETURN_GENERATED_KEYS);

query.setString(1, "Petrenko") ;

query.setInt(2, 4 );

query.executeUpdate();

ResultSet rs = query.getGeneratedKeys();

if( rs.next() ){

System.out.println( "Serial value for inserted record "+rs.getInt(1) ); ;

}