Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
193
Добавлен:
17.04.2018
Размер:
1.39 Mб
Скачать

ИП. БД. Работа с БД в Java. Категоризация исключений

МИЭТ, 2017

SQLException имеет ряд дочерних классов:

SQLNonTransientException — повторная попытка выполнить операцию вызовет такую же ошибку

SQLTransientException — повторная попытка может закончится успешно

SQLRecoverableException — приложению необходимо выполнить действия по восстановлению соединению и попробовать повторить операцию

Предупреждения SQLWarning

SQLWarning — наследник SQLException.

SQLWarning stmt.getWarnings()

Предупреждения очищаются перед каждым новым вызовом выражения.

ИП. БД. Работа с БД в Java. ResultSet

МИЭТ, 2017

Типы ResultSet:

TYPE_FORWARD_ONLY

TYPE_SCROLL_INSENSITIVE

TYPE_SCROLL_SENSITIV

Уровень доступа к данным (concurrency level):

CONCUR_READ_ONLY

CONCUR_UPDATABLE

ИП. БД. Работа с БД в Java. ResultSet. Получение данных

МИЭТ, 2017

ResultSet имеет методы:

getInt, getLong, getFloat, getDouble, getBoolean, getString и т.д.

Методы могут возвращать значение поля как по номеру (нумерация от единицы) столбца, так и по его названию:

String firstName = rs.getString(1); double salary = rs.getDouble('salary');

ИП. БД. Работа с БД в Java. ResultSet. Автокоммит

МИЭТ, 2017

По умолчанию, каждая операция вызывает изменение данных в БД.

conn.setAutoCommit(false) — отключает это.

conn.commit() - «применяет» ранее вызванные операции над БД.

ИП. БД. Работа с БД в Java. Пакетные операции

МИЭТ, 2017

Пакетные операции ускоряют работу с БД.

conn.setAutoCommit(false);

stmt.addBatch(«insert into employees »+ «(first_name, last_name_salary) »+ «values ('Вася', 'Пупкин', 30000)»); stmt.addBatch(«insert into employees »+ «(first_name, last_name_salary) »+ «values ('Петя', 'Сидоров', 20000)»);

int[] updateCounts = stmt.executeBatch(); conn.commit();

ИП. БД. Работа с БД в Java. Подготовленные выражения

МИЭТ, 2017

PreparedStatement — подготовленное выражение, позволяет выполнять один и тот же запрос с разными параметрами.

PreparedStatement pstmt = conn.prepareStatement(«insert into employees »+

«(first_name, last_name, salary) »+ «values (?,?,?)»);

for (Employee e : employees) { pstmt.setString(1, e.getFirstName()); pstmt.setString(2, e.getLastName()); pstmt.setDouble(3, e.getSalary());

pstmt.executeUpdate();

}

ИП. БД. Работа с БД в Java. Пакетные подготовленные выражения МИЭТ, 2017

conn.setAutoCommit(false);

PreparedStatement pstmt = conn.prepareStatement(«insert into employees »+

«(first_name, last_name, salary) »+

«values (?,?,?)»);

for (Employee e : employees) { pstmt.setString(1, e.getFirstName();

pstmt.setString(2, e.getLastName());

pstmt.setDouble(3, e.getSalary());

pstmt.addBatch();

}

int[] updateCounts = pstmt.executeBatch();

conn.commit();

ИП. БД. Работа с БД в Java. Подготовленные выражения

МИЭТ, 2017

Statement и PreparedStatement

Преимущества PreparedStatement

Компилируются на стороне СУБД

Быстрее выполняются

Пригодно для многократного использования с разными подставляемыми значениями в параметры

ИП. БД. Работа с БД в Java. Транзакции

МИЭТ, 2017

Транзакция — это набор одного или нескольких SQL выражений, выполняемых атомарно и, которые либо выполняются все, либо не выполняется ни одно.

Необходимо запретить авто-коммит: conn.setAutoCommit(false);

Применение тразнакции: conn.commit();

Откат транзакции: conn.rollback();

ИП. БД. Работа с БД в Java. Точки сохранения (savepoint)

МИЭТ, 2017

Точка сохранения — это какой либо шаг в транзакции.

Точки сохранения позволяет откатить выражения в транзакции.

conn.setAutoCommit(false);

stmt.executeUpdate(...)

Savepoint save1 = con.setSavepoint();

ResultSet rs = stmt.executeQuery(...);

If (!rs.next()) conn.rollback(save1);

conn.commit();

Соседние файлы в папке Интернет технологии