将外部SQLite数据库导入到我的项目中

时间:2016-04-29 10:51:25

标签: qt sqlite qml

我有兴趣将外部SQLite数据库导入我的项目。 使用QT快速本地存储时:

LocalStorage.openDatabaseSync("QQmlExampleDB", "1.0", "The Example QML SQL!", 1000000);

问题在于,该程序会生成一个新数据库,如果可能,我有兴趣打开现有数据库。

有什么想法吗?

非常感谢!

2 个答案:

答案 0 :(得分:1)

openDatabaseSync在用于存储离线数据的目录中搜索或创建dbs 该目录由offlineStoragePath类的数据成员QQmlEngine标识 要更改它,您可以使用成员方法setOfflineStoragePath(有关详细信息,请参阅hereopenDatabaseSync的第一个参数是:

  

传递给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")

谢谢!