Russian Qt Forum
Ноябрь 22, 2024, 17:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как создать файл с БД SQLite из-под приложения?  (Прочитано 15044 раз)
Alex_ryabis
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« : Май 28, 2021, 11:26 »

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

Сообщений: 221


Просмотр профиля
« Ответ #1 : Май 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();
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.119 секунд. Запросов: 22.