我想用现有的Sqlite数据库打包我的Qt应用程序。我有标准的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中,并且在部署时将无法在该位置使用...所以如何才能获得此数据库的可靠路径?
答案 0 :(得分:0)
setDatabaseName
中的- 调用使用资源文件的正确语法:
m_db.setDatabaseName(":database.sqlite"); // <-- note the : before the name
...假设数据库文件位于资源文件系统的根目录中。
问候,托马斯