Удаление строк из SQLite
Запрос DELETE FROM убирает строки из таблицы.
Условие WHERE ограничивает удаление; без
него таблица опустеет полностью.
Подготовленный DELETE безопасно принимает
значение фильтра:
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:trim.db")) {
try (Statement statement = connection.createStatement()) {
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)"
);
}
PreparedStatement delete = connection.prepareStatement(
"DELETE FROM queue WHERE active = ?"
);
delete.setInt(1, 0);
System.out.println(delete.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:trim.db")) {
PreparedStatement count = connection.prepareStatement(
"SELECT COUNT(*) AS total FROM queue"
);
var result = count.executeQuery(); if (result.next()) {
System.out.println(result.getInt("total"));
}
}
}
}
}
Создайте таблицу tickets_log в box.db
с полями code и sold, добавьте
две записи и удалите строки, где sold
равен 0.
Выведите, сколько записей осталось в таблице
tickets_log, обойдя все строки выборкой.