SELECT возвращает набор строк. Его готовят функцией sqlite3_prepare_v2, а строки обходят, пока функция sqlite3_step возвращает SQLITE_ROW.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpDbSel 602 of 696 menu
◀ ▶

Выборка строк из SQLite

Запрос SELECT возвращает набор строк.

Его готовят функцией sqlite3_prepare_v2, а строки обходят, пока функция sqlite3_step возвращает SQLITE_ROW. Значения берут функциями sqlite3_column_text и sqlite3_column_int по номеру столбца:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("archive.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 folders (" "id INTEGER PRIMARY KEY," "title TEXT 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 folders (title) VALUES ('2024')", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } if (sqlite3_exec( db, "INSERT INTO folders (title) VALUES ('2025')", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } sqlite3_stmt* stmt = nullptr; if (sqlite3_prepare_v2( db, "SELECT title FROM folders ORDER BY id", -1, &stmt, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } while (sqlite3_step(stmt) == SQLITE_ROW) { const char* title = reinterpret_cast<const char*>( sqlite3_column_text(stmt, 0) ); std::cout << title << "\n"; } sqlite3_finalize(stmt); sqlite3_close(db); return 0; }

Цикл while обходит все совпавшие записи. Номера столбцов в SELECT идут с нуля слева направо:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("archive.db", &db) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } sqlite3_stmt* stmt = nullptr; if (sqlite3_prepare_v2( db, "SELECT id, title FROM folders", -1, &stmt, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } while (sqlite3_step(stmt) == SQLITE_ROW) { std::cout << sqlite3_column_int(stmt, 0) << "\n"; const char* title = reinterpret_cast<const char*>( sqlite3_column_text(stmt, 1) ); std::cout << title << "\n"; } sqlite3_finalize(stmt); sqlite3_close(db); return 0; }

Создайте таблицу badges в crew.db, вставьте два названия и выведите каждое через выборку всех строк.

Выведите идентификатор и название для каждой записи таблицы badges отдельными строками в консоль.

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