Flutter中的Sqflite,使用两个数据库(附件)
Posted
技术标签:
【中文标题】Flutter中的Sqflite,使用两个数据库(附件)【英文标题】:Sqflite in flutter, working with two databases (attach) 【发布时间】:2019-08-04 18:36:04 【问题描述】:我在处理两个数据库时遇到了一点问题。我正在使用颤振与飞镖和 sqlite 包 sqflite。
问题描述: 我的资产中有两个数据库(assets/masterdata.db 和 assets/usr.db)。 masterdata.db 不时有新数据,在 usr.db 中我存储用户数据。 我想复制一次 usr.db 和 masterdata.db 每次至少更新应用程序。
问题: 有没有办法为这两个数据库使用“附加数据库”,我该怎么做?
问题 2: 还是有另一种方法可以在更新主数据时将表的数据保存在 usr.db 中? 我想避免在 onUpdate 事件中为新的主数据编写 100 条插入语句。 而且使用 csv 文件获取新数据听起来也不是很聪明。
提前感谢您的任何提示。
【问题讨论】:
【参考方案1】:在您的 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");
【讨论】:
旁注:如果从其他地方调用attachDB()
,请确保添加await
关键字。以上是关于Flutter中的Sqflite,使用两个数据库(附件)的主要内容,如果未能解决你的问题,请参考以下文章