Обновление строк в SQLite
Запрос UPDATE задаёт новые значения столбцов
и обычно ограничивает строки через WHERE.
Без условия изменится вся таблица.
Подготовленный шаблон связывает новое значение и ключ строки:
import java.sql.DriverManager
fun main() {
DriverManager.getConnection("jdbc:sqlite:revise.db")
.use { connection ->
connection.createStatement().use { statement ->
statement.execute(
"""
CREATE TABLE IF NOT EXISTS notes (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
done INTEGER NOT NULL
)
"""
)
statement.executeUpdate(
"INSERT INTO notes (title, done) VALUES ('draft', 0)"
)
}
val update = connection.prepareStatement(
"UPDATE notes SET done = ? WHERE id = ?"
)
update.setInt(1, 1)
update.setInt(2, 1)
println(update.executeUpdate())
}
}
Счётчик от executeUpdate показывает, сколько
строк реально изменилось. Текстовые поля обновляют
тем же способом:
import java.sql.DriverManager
fun main() {
DriverManager.getConnection("jdbc:sqlite:revise.db")
.use { connection ->
val update = connection.prepareStatement(
"UPDATE notes SET title = ? WHERE id = ?"
)
update.setString(1, "final")
update.setInt(2, 1)
update.executeUpdate()
val check = connection.prepareStatement(
"SELECT title FROM notes WHERE id = ?"
)
check.setInt(1, 1)
val result = check.executeQuery()
if (result.next()) {
println(result.getString("title"))
}
}
}
Создайте таблицу meters в utility.db
с полями label и reading, добавьте
строку и измените показание на 105 по
id 1.
Переименуйте метку с "kitchen" на
"hall" для той же записи и выведите
новую метку.