如何使用现有的 Sqlite 数据库部署 Qt 应用程序

How to deploy Qt application with an existing Sqlite db?

本文关键字:数据库 部署 Qt 应用程序 Sqlite 何使用      更新时间:2023-10-16

我想将我的Qt应用程序与现有的Sqlite数据库打包。我有标准的Qt数据库代码:

m_db = QSqlDatabase::addDatabase("QSQLITE"); 
m_db.setDatabaseName("database.sqlite");
bool connected = m_db.open();
if (!connected) {
    qDebug() << "Error: connection with database failed";
} else {
    qDebug() << "Database: connection success";
    QSqlQuery q(m_db);
    q.prepare("SELECT * FROM people");
    if (q.exec()) {
        qDebug() << "Yay!";
    } else {
        qWarning() << "Bad exec: " << q.lastError();
        qWarning() << q.executedQuery();
    }
}

但是,结果是:

Error: connection with database failed

我知道这是因为它没有找到正确的数据库,而是创建了一个新数据库。 如果我在我的开发机器上提供m_db.setDatabaseName()的绝对路径,它可以工作。但是我的数据库文件在我的 .qrc 中,当我部署时,该位置将不可用...那么如何获得此数据库的可靠路径呢?

setDatabaseName -call中使用正确的资源文件语法:

m_db.setDatabaseName(":database.sqlite"); // <-- note the : before the name

。假定数据库文件位于资源文件系统的根目录中。

问候,托马斯