DELETE FROM убирает строки из таблицы. Условие WHERE ограничивает удаление; без него таблица опустеет полностью.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpDbDel 608 of 696 menu
◀ ▶

Удаление строк из SQLite

Запрос DELETE FROM убирает строки из таблицы.

Условие WHERE ограничивает удаление; без него таблица опустеет полностью. Подготовленный DELETE безопасно принимает значение фильтра:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("trim.db", &db) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } char* err = nullptr; if (sqlite3_exec( db, "CREATE TABLE IF NOT EXISTS queue (" "id INTEGER PRIMARY KEY," "task TEXT NOT NULL," "active INTEGER NOT NULL" ")", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } if (sqlite3_exec( db, "INSERT INTO queue (task, active) " "VALUES ('old', 0)", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } if (sqlite3_exec( db, "INSERT INTO queue (task, active) VALUES ('new', 1)", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } sqlite3_stmt* del = nullptr; if (sqlite3_prepare_v2( db, "DELETE FROM queue WHERE active = ?", -1, &del, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } sqlite3_bind_int(del, 1, 0); if (sqlite3_step(del) != SQLITE_DONE) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_finalize(del); sqlite3_close(db); return 1; } std::cout << sqlite3_changes(db) << "\n"; sqlite3_finalize(del); sqlite3_close(db); return 0; }

После удаления выборка показывает оставшиеся строки. Агрегат COUNT(*) помогает проверить эффект:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("trim.db", &db) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } sqlite3_stmt* count = nullptr; if (sqlite3_prepare_v2( db, "SELECT COUNT(*) FROM queue", -1, &count, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } if (sqlite3_step(count) == SQLITE_ROW) { std::cout << sqlite3_column_int(count, 0) << "\n"; } sqlite3_finalize(count); sqlite3_close(db); return 0; }

Создайте таблицу tickets_log в box.db с полями code и sold, добавьте две записи и удалите строки, где sold равен 0.

Выведите, сколько записей осталось в таблице tickets_log, обойдя все строки выборкой.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить