За последние пару недель я работал с SQLite в приложении C ++ / WinRT. SQLite встроен в Windows SDK, но я не обнаружил это достаточно скоро и пошел по пути использования официальной версии, доступной в vcpkg , и выпустил sqlite.org .
Мне удалось довольно легко заставить работать библиотеку, но я не смог освоить интерфейс C. В vcpkg также есть несколько хороших оболочек для C ++, поэтому я попробовал 2 из них и остановился на использовании sqlite_modern_cpp . Кажется, он не работает активно, но это просто интерфейс и хорошо работает с sqlite версии 3.28.
Чтобы начать использовать sqlite или sqlite_modern_cpp, я использую в основном тот же метод.
1. Установите один из них, используя vcpkg
.\vcpkg.exe install sqlite-modern-cpp:x64-uwp
или
.\vcpkg.exe install sqlite3:x64-uwp
2. Включите интеграцию в масштабе пользователя в vcpkg
.\vcpkg.exe integrate install
3. Создайте новый проект, используя пустой шаблон приложения C ++ / WinRT
4. Изменить на x64 build
5. Перейдя на x64, вы сможете добавить следующее в pch.h
#include "sqlite_modern_cpp.h"
или
#include "sqlite3.h"
6. Теперь вы можете создать базу данных sqlite и добавить таблицу
В этом примере используется sqlite-modern-cpp, и он был помещен в обработчик кликов пустого шаблона приложения просто для того, чтобы его можно было разместить.
void MainPage::ClickHandler(IInspectable const&, RoutedEventArgs const&)
{
myButton().Content(box_value(L"Clicked"));
// path for the temporary database file
hstring path{ ApplicationData::Current().LocalFolder().Path() + L"\\temp.db" };
// store the file name for use later
std::string fname = to_string(path.c_str());
// open a connection to the database or create the file if it doesn't exist
sqlite::database db(fname); // default is READWRITE | CREATE
// enable foreign keys
db << "PRAGMA foreign_keys = ON;";
// create a new table, if needed
db << "CREATE TABLE IF NOT EXISTS division ("
" id INTEGER PRIMARY KEY AUTOINCREMENT,"
" name TEXT NOT NULL,"
" distance INTEGER NOT NULL,"
" size INTEGER NOT NULL,"
" lanes INTEGER NOT NULL,"
" rank INTEGER NOT NULL,"
" progression TEXT NOT NULL,"
" UNIQUE (name, distance, size)"
");";
}
7. Запуск приложения и нажатие на кнопку сгенерирует БД.
Используя описанный выше метод, файл будет создан в локальной папке приложения.
C: \ Users \\ AppData \ Local \ Packages \\ LocalState \ temp.db