我在处理两个数据库方面有一个小问题。我正在使用带有dart的flutter和sqlite软件包sqflite。
问题描述: 我的资产中有两个数据库(assets / masterdata.db和assets / usr.db)。 masterdata.db会不时有新数据,我正在usr.db中存储用户数据。 我想至少每次更新应用程序一次都复制一次usr.db和masterdata.db。
问题: 有没有办法为两个数据库使用“附加数据库”,我该怎么做?
问题2: 还是有另一种在更新masterdata时将表的数据保存在usr.db中的方法? 我想避免在onUpdate事件中为新的masterdata编写100条插入语句。 而且,将csv文件用于新数据听起来并不明智。
在此先感谢您的提示。
答案 0 :(得分:0)
在masterdata数据库助手中,您可以执行以下操作来附加数据库
Future<Database> attachDb({Database db, String databaseName, String databaseAlias}) async {
Directory documentDirectory = await getApplicationDocumentsDirectory();
String absoluteEndPath = join(documentDirectory.path, databaseName);
await db.rawQuery("ATTACH DATABASE '$absoluteEndPath' as '$databaseAlias'");
return db;
}
因此,在初始化数据库时,您可以运行
attachDb(
db:db,
databaseName:"usr.db",
databaseAlias:"USER_DATABASE",
);
然后您可以像这样在查询中引用数据库
db.rawQuery("SELECT * FROM USER_DATABASE.table_name");