sqlite - Flutter中的Sqflite,使用两个数据库(附件)

标签 sqlite dart flutter sqflite

我在处理两个数据库时遇到了一点问题。我正在使用 flutter 与 Dart 和 sqlite 包 sqflite。

问题描述: 我的 Assets 中有两个数据库(assets/masterdata.db 和 assets/usr.db)。 masterdata.db 不时有新数据,在 usr.db 中我存储用户数据。 我想复制一次 usr.db 和 masterdata.db 每次至少更新应用程序。

问题: 有没有办法为这两个数据库使用“附加数据库”,我该怎么做?

问题 2: 还是有另一种方法可以在更新主数据时将表的数据保存在 usr.db 中? 我想避免在 onUpdate 事件中为新的主数据编写 100 条插入语句。 而且使用 csv 文件获取新数据听起来也不是很聪明。

提前感谢您的任何提示。

最佳答案

在您的 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");

关于sqlite - Flutter中的Sqflite,使用两个数据库(附件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152815/

相关文章:

android - 如何获取sqlite的数据并将其放入FragmentList并单击item

database - 如何限制 PouchDB 修订或永久删除修订

java - 在 SQLite 帮助器中使用 COUNT() 计算行数时出现 NullPointerException

flutter - 在 ListView 中显示复选框

flutter - 是否可以在 flutter 中播放设备的默认通知声音?

firebase - 如何使用Firebase在Flutter中登录用户的电子邮件

python - 如何将列表变量从元组转换为字符串

flutter - 'List<dynamic>'类型不是 'FutureOr<String>'类型的子类型

dart - 无法从mousemove事件获取鼠标指针信息

android - 返回在 Flutter 中显示黑屏