2017-02-06 65 views
1

我想用我現有的Sqlite數據包打包我的Qt應用程序。我有標準的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中,並且在部署時不會在該位置可用...因此,如何才能爲此數據庫獲得可靠的路徑?

+0

這是你在找什麼?:爲https://stackoverflow.com/questions/4254250/embedded-database-in-qt – Nazar554

回答

0

setDatabaseName -call使用正確的語法資源文件:

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

...假設數據庫文件位於資源文件系統的根。

問候,托馬斯

相關問題