Удаление строк из SQLite
Запрос DELETE FROM убирает строки из таблицы.
Условие WHERE ограничивает удаление; без
него таблица опустеет полностью.
Подготовленный DELETE безопасно принимает
значение фильтра:
import java.sql.DriverManager
fun main() {
DriverManager.getConnection("jdbc:sqlite:trim.db")
.use { connection ->
connection.createStatement().use { statement ->
statement.execute(
"""
CREATE TABLE IF NOT EXISTS queue (
id INTEGER PRIMARY KEY,
task TEXT NOT NULL,
active INTEGER NOT NULL
)
"""
)
statement.executeUpdate(
"INSERT INTO queue (task, active) VALUES ('old', 0)"
)
statement.executeUpdate(
"INSERT INTO queue (task, active) VALUES ('new', 1)"
)
}
val delete = connection.prepareStatement(
"DELETE FROM queue WHERE active = ?"
)
delete.setInt(1, 0)
println(delete.executeUpdate())
}
}
После удаления выборка показывает оставшиеся строки. Счётчик изменённых записей помогает проверить эффект:
import java.sql.DriverManager
fun main() {
DriverManager.getConnection("jdbc:sqlite:trim.db")
.use { connection ->
val count = connection.prepareStatement(
"SELECT COUNT(*) AS total FROM queue"
)
val result = count.executeQuery()
if (result.next()) {
println(result.getInt("total"))
}
}
}
Создайте таблицу tickets_log в box.db
с полями code и sold, добавьте
две записи и удалите строки, где sold
равен 0.
Выведите, сколько записей осталось в таблице
tickets_log, обойдя все строки выборкой.