Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpDbInr 597 of 696 menu
◀ ▶

Введение в базу данных в C++

База данных на диске часто хранится как один файл SQLite.

Внутри лежат таблицы - именованные наборы колонок с одним типом строк. Каждая строка - запись, а отдельная колонка в записи - поле.

Программа на C++ открывает такой файл через библиотеку sqlite3, а команды на английском языке задают структуру и данные. Такой текст называют SQL-запросом.

Типичная цепочка для новой таблицы: создать схему, добавить строку и прочитать содержимое. Файл glossary.db получит таблицу terms и одну запись:

#include <iostream> #include <sqlite3.h> int main() { sqlite3* db = nullptr; if (sqlite3_open("glossary.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 terms (" "id INTEGER PRIMARY KEY," "word TEXT NOT NULL," "hint TEXT" ")", nullptr, nullptr, &err ) != SQLITE_OK) { std::cerr << err << "\n"; sqlite3_free(err); sqlite3_close(db); return 1; } if (sqlite3_exec( db, "INSERT INTO terms (word, hint) " "VALUES ('sqlite', 'embedded engine')", 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 word, hint FROM terms", -1, &stmt, nullptr ) != SQLITE_OK) { std::cerr << sqlite3_errmsg(db) << "\n"; sqlite3_close(db); return 1; } while (sqlite3_step(stmt) == SQLITE_ROW) { const char* word = reinterpret_cast<const char*>( sqlite3_column_text(stmt, 0) ); const char* hint = reinterpret_cast<const char*>( sqlite3_column_text(stmt, 1) ); std::cout << word << "\n"; std::cout << hint << "\n"; } sqlite3_finalize(stmt); sqlite3_close(db); return 0; }

Запрос CREATE TABLE описывает поля, INSERT кладет значения в колонки, SELECT возвращает выбранные столбцы. Имена таблиц и полей в SQL пишут латиницей, как в примере с terms.

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