Qt 5.8 — база данных SQLite создается / открывается при использовании Qt Creator для запуска приложения, но не при развертывании с windeployqt

Мой проект Qt C ++ включает в себя динамическое создание и работу с базами данных SQLite.

Я инкапсулирую все, что связано с базами данных внутри класса Database. Вот мой метод, чтобы создать файл базы данных, если он не существует, или открыть его, если он существует:

void Database::connectDB(QString databaseName)
{
QString fPath = QCoreApplication::applicationDirPath();
fileName = fPath + "/DBs/" + databaseName + ".db";
db = QSqlDatabase::database(connectionName);
db.setDatabaseName(fileName);
}

connectionName а также fileNameQStrings созданы в другом месте и являются действительными. Проще говоря, этот код работает. Но только при запуске из Qt Creator. Я подтвердил, что абсолютный путь, которым я кормлю setDatabaseName переопределяет рабочий каталог, как показано в настройках проекта Qt Creator. Я должен вручную создать папку БД. Возможно, это не лучший способ сделать это, но я не думаю, что это влияет на эту ситуацию. В конце концов, я должен создать его до запуска из Qt Creator.

Я развернул на Windows 10, используя шаги из следующего видео: https://www.youtube.com/watch?v=8qozxqSZQEg

я думаю --quick Аргумент для Qt Quick, который я не использую. Я пробовал с и без.

После развертывания приложение выглядит так, как будто оно работает, но необходимые ему базы данных никогда не создаются, поэтому в конечном итоге происходит сбой. Меня удивляет, что он не сразу падает. Я могу ошибаться, но кажется, что он создает первые несколько баз данных в памяти. Некоторая информация, которая должна быть доступна только при чтении данных, ранее введенных в базу данных, действительно отображается. Но нет, если я закрою и перезапущу.

Я прочитал этот вопрос и связанные с ним вопросы, но они не имеют ничего общего с точным характером этой проблемы: Путь к текущему каталогу проекта в qt

Я не могу обернуть голову, почему это не работает. Я создал папки DB в каждой родительской папке, просто чтобы быть уверенным. Ничего такого. Файлы просто не созданы. Работает в IDE, не раз разворачивается. Что предоставляет Qt Creator, который недоступен приложению после развертывания?

Я использую компилятор msvc2015_64, если это имеет значение. Если есть какие-то другие подробности, которые я опускаю, которые могут быть полезны, пожалуйста, укажите их. Я буду редактировать их в.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]