Мой проект 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
а также fileName
QStrings созданы в другом месте и являются действительными. Проще говоря, этот код работает. Но только при запуске из 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, если это имеет значение. Если есть какие-то другие подробности, которые я опускаю, которые могут быть полезны, пожалуйста, укажите их. Я буду редактировать их в.
Задача ещё не решена.
Других решений пока нет …