INSERT INTO перечисляет столбцы и значения для новой строки. Его выполняют через sqlite3_exec или подготовленный запрос.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpDbIns 601 of 696 menu
◀ ▶

Вставка строк в SQLite

Запрос INSERT INTO перечисляет столбцы и значения для новой строки.

Его выполняют через sqlite3_exec или подготовленный запрос. Функция sqlite3_changes возвращает, сколько строк изменил последний запрос. Для одной вставки это обычно 1:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("ledger.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 entries (" "id INTEGER PRIMARY KEY," "tag TEXT NOT NULL," "amount 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 entries (tag, amount) " "VALUES ('fuel', 420)", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } std::cout << sqlite3_changes(db) << "\n"; sqlite3_close(db); return 0; }

Несколько вставок подряд накапливают строки в одной таблице. После каждого успешного INSERT счетчик можно прочитать отдельно:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("ledger.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 entries (" "id INTEGER PRIMARY KEY," "tag TEXT NOT NULL," "amount 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 entries (tag, amount) " "VALUES ('rent', 900)", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } int first = sqlite3_changes(db); if (sqlite3_exec( db, "INSERT INTO entries (tag, amount) " "VALUES ('tax', 150)", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } int second = sqlite3_changes(db); std::cout << first + second << "\n"; sqlite3_close(db); return 0; }

Создайте таблицу beacons в signal.db и добавьте запись с кодом "north" и уровнем 7. Выведите число затронутых строк.

Добавьте вторую запись с кодом "south" и уровнем 3. Выведите сумму счетчиков обеих вставок.

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