qt creator Deploy sqlite

qt creator Deploy sqlite,qt,deployment,qt-creator,Qt,Deployment,Qt Creator,我正在尝试使用QT和SQLite数据库部署windows应用程序。我让它在没有QT的情况下运行,但是如何在不使用计算机文件路径的情况下包含数据库呢。我想在其他系统上部署它。下面是我从db name使用的路径示例 db=QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("C:\\Users\\johnm\\Documents\\build-Login-Desktop_Qt_5_10_1_MinGW_32bit-Release\\rel

我正在尝试使用QT和SQLite数据库部署windows应用程序。我让它在没有QT的情况下运行,但是如何在不使用计算机文件路径的情况下包含数据库呢。我想在其他系统上部署它。下面是我从db name使用的路径示例

db=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:\\Users\\johnm\\Documents\\build-Login-Desktop_Qt_5_10_1_MinGW_32bit-Release\\release\\GbManuf.db");

提前感谢您的帮助。

一个可能的解决方案是使用返回可执行文件所在目录的

QString path = QDir(QCoreApplication::applicationDirPath()).filePath("GbManuf.db");
db=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(path);

一种可能的解决方案是使用返回可执行文件所在目录的

QString path = QDir(QCoreApplication::applicationDirPath()).filePath("GbManuf.db");
db=QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(path);

对于所有类型的可访问公共路径,可以使用。 例如:

QString homeDirectory = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);

有许多Q标准路径可供查找:AppDataLocation、CacheLocation、DownloadLocation等。

对于各种可访问的公共路径,您可以使用。 例如:

QString homeDirectory = QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
有许多QStandardPath可供查找:AppDataLocation、CacheLocation、DownloadLocation等。

要存储应用程序数据,可以使用QStandardPath::AppDataLocation

返回可以存储持久应用程序数据的目录位置。这是一个特定于应用程序的目录。要获取存储要与其他应用程序共享的数据的路径,请使用QStandardPath::GenericDataLocation。返回的路径从不为空。在Windows操作系统上,这将返回漫游路径。此枚举值是在Qt5.4中添加的

要存储应用程序数据,可以使用QStandardPath::AppDataLocation

返回可以存储持久应用程序数据的目录位置。这是一个特定于应用程序的目录。要获取存储要与其他应用程序共享的数据的路径,请使用QStandardPath::GenericDataLocation。返回的路径从不为空。在Windows操作系统上,这将返回漫游路径。此枚举值是在Qt5.4中添加的


在windows上,二进制文件需要额外的权限才能写入程序文件文件夹。数据位置可以改为使用。@sddk根据询问者显示的路径,很明显它不在程序文件中,而是在文档中,因此不需要有特殊权限。不,它是OP的位置。用户我的意思是将使用该应用程序的用户可以在任何地方安装该应用程序。@sddk该问题留下了许多空白,因此您的答案和我的答案都是有效的,由社区决定:在windows上,二进制文件需要额外的权限才能写入程序文件文件夹。数据位置可以改为使用。@sddk根据询问者显示的路径,很明显它不在程序文件中,而是在文档中,因此不需要有特殊权限。不,它是OP的位置。用户我的意思是将使用该应用程序的用户可以在任何地方安装该应用程序。@sddk该问题留下了许多空白,因此您的答案和我的答案都是有效的,由社区决定:Dif如果所有应用程序都使用HomeLocation来写入数据,那么主路径将像一团乱。嗯,糟了!这就是为什么我明确表示还有其他地方可供选择。很明显,你也可以添加子文件夹。对不起,我已经阅读了你推荐使用主文件夹的内容,你说得对。同时,将文件夹添加到主文件夹也可以是一个解决方案。如果所有应用程序都使用HomeLocation写入数据,主路径将像一团乱麻。嗯,糟了!这就是为什么我明确表示还有其他地方可供选择。很明显,你也可以添加子文件夹。对不起,我已经阅读了你推荐使用主文件夹的内容,这是正确的。同时,将文件夹添加到主文件夹也是一个解决方案。如果你想要一个可移植的解决方案,最好使用QStandardPaths如果你想要一个可移植的解决方案,最好使用QStandardPaths