
- •Интернет-программирование
- •ИП. Базы данных. Реляционная модель
- •ИП. Базы данных. Узкие места реляционной модели
- •ИП. Базы данных. Рост объема данных в мире
- •ИП. Базы данных. Пути решения проблемы Больших Данных
- •ИП. БД. Пути решения проблемы BD. Скорость вычислений
- •ИП. БД. Пути решения проблемы BD. Скорость вычислений
- •ИП. БД. Пути решения проблемы BD. Распределение вычислений МИЭТ, 2017
- •ИП. БД. Пути решения проблемы BD. Архитектура вычислителя
- •ИП. БД. Пути решения проблемы BD. Модель «хранителя»
- •ИП. БД. Временная диаграмма развития моделей хранения данных МИЭТ, 2017
- •ИП. Базы данных. Модели и представители
- •ИП. БД. SQL и NoSQL
- •ИП. БД. Модель Ключ-Значение
- •ИП. БД. Модель Документо-ориентированная
- •ИП. БД. Модель семейство столбцов (колоночная)
- •ИП. БД. Модель семейство столбцов (колоночная)
- •ИП. БД. Модель Ключ-Значение
- •ИП. БД. SQL или NoSQL
- •ИП. БД. Распространенность моделей
- •ИП. БД. Распространенность моделей
- •ИП. БД. Подключение БД в приложении
- •ИП. БД. Работа с БД на примере MySQL в PHP
- •ИП. БД. Работа с БД на примере MySQL в Java
- •ИП. БД. Работа с БД на примере MySQL в Java
- •ИП. БД. Работа с БД в Java. JDBC
- •ИП. БД. Работа с БД в Java. Типы драйверов JDBC
- •ИП. БД. Работа с БД в Java. Подключение
- •ИП. БД. Работа с БД в Java. URL соединения
- •ИП. БД. Работа с БД в Java. Обработка ошибок
- •ИП. БД. Работа с БД в Java. Категоризация исключений
- •ИП. БД. Работа с БД в Java. ResultSet
- •ИП. БД. Работа с БД в Java. ResultSet. Получение данных
- •ИП. БД. Работа с БД в Java. ResultSet. Автокоммит
- •ИП. БД. Работа с БД в Java. Пакетные операции
- •ИП. БД. Работа с БД в Java. Подготовленные выражения
- •ИП. БД. Работа с БД в Java. Пакетные подготовленные выражения МИЭТ, 2017
- •ИП. БД. Работа с БД в Java. Подготовленные выражения
- •ИП. БД. Работа с БД в Java. Транзакции
- •ИП. БД. Работа с БД в Java. Точки сохранения (savepoint)
- •ИП. БД. Работа с БД в Java. Освобождение точек сохранения
- •ИП. БД. Работа с БД в Java. Параллельное использование БД
- •ИП. БД. Работа с БД в Java. Уровни изоляции транзакций
ИП. БД. Работа с БД в 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();