我有兴趣将外部SQLite数据库导入我的项目。 使用QT快速本地存储时:
LocalStorage.openDatabaseSync("QQmlExampleDB", "1.0", "The Example QML SQL!", 1000000);
问题在于,该程序会生成一个新数据库,如果可能,我有兴趣打开现有数据库。
有什么想法吗?
非常感谢!
答案 0 :(得分:1)
openDatabaseSync
在用于存储离线数据的目录中搜索或创建dbs
该目录由offlineStoragePath
类的数据成员QQmlEngine
标识
要更改它,您可以使用成员方法setOfflineStoragePath
(有关详细信息,请参阅here)
openDatabaseSync
的第一个参数是:
传递给openDatabase()
的数据库的名称
有关详细信息,请参阅here。
答案 1 :(得分:1)
谢谢大家,有了你的信息,我可以解决我的问题,所有我必须做的事情是: 首先在main.cpp中设置我的离线存储路径:
engine.setOfflineStoragePath(QString("./"));
然后我也添加了这段代码:
QDir dir("./Databases");
if (!dir.exists()) {
dir.mkpath(".");
}
QString new_name = QString(QCryptographicHash::hash(("nameofthecopiedDB"),QCryptographicHash::Md5).toHex());
QFile file(":/SQLite/nameofsourceDB.sqlite");
file.copy("./Databases/" + new_name + ".sqlite");
file.close();
由于我有数据库,我将在我的资源中使用SQLite文件夹中的项目(:,表示资源)。
然后,在QML文件中,openDatabaseSync()函数:
basedades = Sql.LocalStorage.openDatabaseSync('nameofthecopiedDB',"1.0","Els meus entrenaments",1000000,"QSQLITE")
谢谢!