3
我想連接到我的qt 5.2項目(在Android操作系統中)的現有SQLlite數據庫文件。我應該在哪裏保存該文件以使用此代碼加載它:QSqlDatabase::addDatabase("myfile.sqlite");
?Qt如何連接到Android操作系統中的現有SQLlite文件?
我想連接到我的qt 5.2項目(在Android操作系統中)的現有SQLlite數據庫文件。我應該在哪裏保存該文件以使用此代碼加載它:QSqlDatabase::addDatabase("myfile.sqlite");
?Qt如何連接到Android操作系統中的現有SQLlite文件?
首先,您應該使用addDatabase添加數據庫連接,驅動程序類型爲QSQLITE,連接名稱爲MyConnection。
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","MyConnection");
接下來,您應該設置連接的數據庫名稱並將其打開。
db.setDatabaseName("myfile.sqlite");
if(!db.open())
{
QMessageBox::warning(this, tr("Failed to connect!"), tr("Error connecting to database: ")+db.lastError().driverText());
}
在你的開發文件夾,你會發現\機器人\資產 - 只是把SQLite數據庫文件到該文件夾,它們添加到您的.pro:
deployment.files += myfile.sqlite
deployment.path = /assets
INSTALLS += deployment
但在資產中的文件只讀。所以你應該先把它複製到其他位置:
QFile dfile("assets:/myfile.sqlite");
if (dfile.exists())
{
dfile.copy("./myfile.sqlite");
QFile::setPermissions("./myfile.sqlite",QFile::WriteOwner | QFile::ReadOwner);
}
現在你可以連接到你的數據庫,如上所述。
我按照這些步驟,但是當我建立我的android應用程序的sqlite數據庫從資產文件中刪除?我無法插入或從數據庫中獲取值?請提前幫助並提前致謝 –
@noname您也可以使用Qt Resource系統,這是一個跨平臺的解決方案。默認情況下,所有Qt應用程序都可以使用':/'前綴或URL方案前綴'qrc:'來訪問qrc文件的內容。所以你需要的只是將sqlite文件添加到項目資源文件中,並將其複製到某個位置並在以後使用 – Nejat
感謝您的回覆,我嘗試此操作並將其複製到其目錄中,但是當我想插入值到數據庫我得到這個文件只讀,但我使用我的文件的setpremissions和相同的:嘗試這個文件只讀 –