Russian Qt Forum

Qt => Базы данных => Тема начата: Alex_ryabis от Май 28, 2021, 11:26



Название: Как создать файл с БД SQLite из-под приложения?
Отправлено: Alex_ryabis от Май 28, 2021, 11:26
Есть некоторая структура таблиц, которая используется с применением БД, основанной на SQLite. К этой БД подключаются еще несколько приложений (3-4) и тоже работают с ней. Необходим обмен между приложениями по SQL с использованием БД.
Из главного приложения должна создаваться сама база. Как создать её временно, в памяти и заполнить таблицами понятно, об этом пишут все учебники. Но как потом выгрузить её в отдельный файл, чтобы результаты после завершения приложения сохранились на ЖМД? Заранее создавать отдельный файл БД и таскать его с исполняемым файлом не хочется.


Название: Re: Как создать файл с БД SQLite из-под приложения?
Отправлено: RedDog от Май 28, 2021, 11:36
Создаем пустой файл:

Код:
if (!std::filesystem::exists(DbFile.toStdString()))
        std::ifstream file(DbFile.toStdString(), std::ios_base::in);
Создаем структуру БД.
CreateDB - вектор с SQL на создание таблиц, индексов и прочей предварительной инициализации.
Код:
auto сonnection = QSqlDatabase::addDatabase("QSQLITE", "SomeDatabase");
connection.setDatabaseName(DbFile);
bool isOpened = connection.open();
    if (!isOpened)
        return;
connection.transaction();
for (auto& createSQL : CreateDB)
    connection.exec(createSQL);
connection.commit();