
Транзакции в SQLITE
Presentation
•
Information Technology (IT)
•
Vocational training
•
Practice Problem
•
Hard
Еркебулан Жунусов
Used 2+ times
FREE Resource
14 Slides • 0 Questions
1
Лекция: Транзакции в SQLite. Использование SQLiteStatement. onUpgrade. Обновление базы данных в SQLite
Жунусов Еркебұлан
2
Транзакции в SQLite
Что такое транзакция?
Транзакция – это группа операций с базой данных, которые выполняются как единое целое. Если одна из операций в транзакции не выполняется успешно, все изменения откатываются, чтобы избежать неконсистентного состояния базы данных.
3
Основные команды транзакций в SQLite
SQLite поддерживает следующие команды для управления транзакциями:
BEGIN TRANSACTION; – начало транзакции.
COMMIT; – подтверждение изменений.
ROLLBACK; – отмена всех изменений, выполненных с момента начала транзакции.
4
Пример использования транзакций в SQLite на Kotlin
val db = this.writableDatabase
try {
db.beginTransaction()
db.execSQL("INSERT INTO users (name, age) VALUES ('Alice', 25)")
db.execSQL("INSERT INTO users (name, age) VALUES ('Bob', 30)")
db.setTransactionSuccessful()
} catch (e: Exception) {
e.printStackTrace()
} finally {
db.endTransaction()
5
В этом коде мы используем beginTransaction() для начала транзакции, выполняем несколько SQL-запросов и вызываем setTransactionSuccessful(), если все операции выполнены без ошибок. В блоке finally вызываем endTransaction(), что либо фиксирует изменения, либо откатывает их.
6
writableDatabase — позволяет читать и записывать данные.
readableDatabase — только чтение (если в хранилище устройства недостаточно места, база может открыться только в этом режиме).
try-catch — это конструкция для обработки исключений (ошибок) во время выполнения программы. Она предотвращает краш приложения при возникновении ошибки.
execSQL — это метод класса SQLiteDatabase, который выполняет сырые SQL-запросы (DDL и DML), такие как CREATE TABLE, INSERT, UPDATE, DELETE и DROP TABLE.
setTransactionSuccessful() — это метод SQLiteDatabase, который сообщает системе, что текущая транзакция успешно выполнена. Без него изменения будут отменены (ROLLBACK) при завершении транзакции.
e.printStackTrace() — это метод, который используется для вывода стека вызовов (stack trace) ошибки, которая произошла во время выполнения программы. Он выводит подробную информацию о месте и причине ошибки в консоль, что помогает разработчику понять, что именно пошло не так.
7
Использование SQLiteStatement
Что такое SQLiteStatement?
SQLiteStatement – это предварительно скомпилированное SQL-выражение, которое позволяет повысить производительность при многократном выполнении одного и того же запроса.
8
Пример использования SQLiteStatement на Kotlin
val db = this.writableDatabase
val sql = "INSERT INTO users (name, age) VALUES (?, ?)"
val stmt = db.compileStatement(sql)
// Вставка первого пользователя
stmt.bindString(1, "Charlie") // Привязываем строку Charlie к первому параметру
stmt.bindLong(2, 28) // Привязываем число 28 ко второму параметру
stmt.executeInsert() // Выполняем вставку
stmt.clearBindings() // Очищаем привязки, чтобы можно было использовать другие значения
// Вставка второго пользователя
stmt.bindString(1, "Diana")
stmt.bindLong(2, 32)
stmt.executeInsert()
stmt.close() // Закрываем подготовленный запрос
9
Метод compileStatement(sql) в SQLiteDatabase используется для подготовки (компиляции) SQL-выражения перед его выполнением. Это даёт повышенную производительность по сравнению с execSQL(), особенно если одно и то же выражение выполняется многократно.
bindString() — это метод, который связывает строковое значение (String) с параметром (?) в подготовленном SQL-запросе (compileStatement()).
bindLong() — это метод, который связывает целочисленное (Long) значение с параметром (?) в подготовленном SQL-запросе (compileStatement()).
10
Здесь SQLiteStatement используется для оптимизации вставки данных. Вместо создания нового SQL-запроса для каждого пользователя, мы компилируем один запрос и переиспользуем его, изменяя значения параметров.
11
onUpgrade: обновление базы данных в SQLite
Метод onUpgrade
При изменении структуры базы данных (например, добавлении новых таблиц или изменении полей) необходимо обновлять схему базы данных. Это выполняется в методе onUpgrade().
12
Пример реализации onUpgrade на Kotlin
override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
if (oldVersion < 2) {
// Если старая версия базы меньше 2, добавляем новый столбец email в таблицу users
db.execSQL("ALTER TABLE users ADD COLUMN email TEXT")
}
if (oldVersion < 3) {
// Если старая версия базы меньше 3, создаем новую таблицу orders
db.execSQL("CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount REAL)")
}
}
13
Этот метод вызывается автоматически при изменении версии базы данных. Он позволяет обновить структуру без потери данных. В приведенном коде, если версия базы меньше 2, добавляется новый столбец email в таблицу users. Если версия базы меньше 3, создается новая таблица orders.
14
Заключение
В данной лекции мы рассмотрели основные механизмы работы с SQLite на Kotlin:
Использование транзакций для обеспечения целостности данных.
Оптимизацию запросов с помощью SQLiteStatement.
Обновление базы данных через метод onUpgrade().
Эти техники позволяют создавать эффективные и надежные приложения, работающие с базами данных в Android.
Лекция: Транзакции в SQLite. Использование SQLiteStatement. onUpgrade. Обновление базы данных в SQLite
Жунусов Еркебұлан
Show answer
Auto Play
Slide 1 / 14
SLIDE
Similar Resources on Wayground
8 questions
Мастер-класс
Presentation
•
Professional Development
12 questions
Wh Questions
Presentation
•
Professional Development
8 questions
Урок без назРыхление почвывания
Presentation
•
KG
9 questions
Виразкова хвороба 12-палої кишки
Presentation
•
Professional Development
9 questions
МК Преподы в черном
Presentation
•
Professional Development
11 questions
Ситуационное руководство
Presentation
•
Professional Development
11 questions
Нарушение письма
Presentation
•
Professional Development
8 questions
Знакомимся с возможностями «Урока», созданного в Quizizz
Presentation
•
Professional Development
Popular Resources on Wayground
20 questions
"What is the question asking??" Grades 3-5
Quiz
•
1st - 5th Grade
20 questions
“What is the question asking??” Grades 6-8
Quiz
•
6th - 8th Grade
10 questions
Fire Safety Quiz
Quiz
•
12th Grade
20 questions
Equivalent Fractions
Quiz
•
3rd Grade
34 questions
STAAR Review 6th - 8th grade Reading Part 1
Quiz
•
6th - 8th Grade
20 questions
“What is the question asking??” English I-II
Quiz
•
9th - 12th Grade
20 questions
Main Idea and Details
Quiz
•
5th Grade
47 questions
8th Grade Reading STAAR Ultimate Review!
Quiz
•
8th Grade