Обновление строк в SQLite
Запрос UPDATE задаёт новые значения столбцов
и обычно ограничивает строки через WHERE.
Без условия изменится вся таблица.
Подготовленный шаблон связывает новое значение и ключ строки:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
try (Connection connection = DriverManager.getConnection("jdbc:sqlite:revise.db")) {
try (Statement statement = connection.createStatement()) {
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)"
);
}
PreparedStatement update = connection.prepareStatement(
"UPDATE notes SET done = ? WHERE id = ?"
);
update.setInt(1, 1);
update.setInt(2, 1);
System.out.println(update.executeUpdate());
}
}
}
}
Счётчик от executeUpdate показывает, сколько
строк реально изменилось. Текстовые поля обновляют
тем же способом:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
try (Connection connection = DriverManager.getConnection("jdbc:sqlite:revise.db")) {
PreparedStatement update = connection.prepareStatement(
"UPDATE notes SET title = ? WHERE id = ?"
);
update.setString(1, "final");
update.setInt(2, 1);
update.executeUpdate();
PreparedStatement check = connection.prepareStatement(
"SELECT title FROM notes WHERE id = ?"
);
check.setInt(1, 1);
var result = check.executeQuery(); if (result.next()) {
System.out.println(result.getString("title"));
}
}
}
}
}
Создайте таблицу meters в utility.db
с полями label и reading, добавьте
строку и измените показание на 105 по
id 1.
Переименуйте метку с "kitchen" на
"hall" для той же записи и выведите
новую метку.