gpt4 book ai didi

android - 使用 DBFlow 在查找表中初始化数据的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-30 01:29:11 24 4
gpt4 key购买 nike

我是第一次尝试实现 DBFlow,我想我可能只是不明白。我不是高级 Android 开发人员,但我创建了一些应用程序。过去,我只会创建一个扩展 SQLiteOpenHelper 的“数据库”对象,然后覆盖回调方法。

在 onCreate 中,一旦创建了所有表,我将使用硬编码的 SQL 字符串填充任何查找数据:db.execSQL(Interface.INSERT_SQL_STRING);。因为我很懒,所以在 onUpgrade()onDowngrade() 中,我只是删除表并调用 onCreate(db);

我通读了迁移文档,该文档不仅在语法上似乎已经过时,因为注释中的“database =”已更改为“databaseName =”,而且也没有提及从无数据库迁移到“初始版本” ”。我找到了一个 issue声称迁移 0 可用于此目的,但此时我无法进行任何迁移。

如有任何帮助,我们将不胜感激。该项目是@Github .

最佳答案

下面的答案是正确的,但我相信这个答案和问题将很快与大多数第三方 ORM 一起被“弃用”。谷歌新Room Persistence Library ( Yigit's Talk ) 在大多数情况下是首选。尽管 DBFlow 肯定会在许多项目中继续(谢谢 Andrew),但这里是将人们重新定向到最新“最佳实践”的好地方,因为这个特定问题是/适合 DBFlow 的新手。

初始化数据库的正确方法(类似于 SQLiteOpenHelper 的 onCreate(db) 回调是创建一个 Migration object 扩展 BaseMigrationversion=0,然后将以下内容添加到 Application 类中的 onCreate()(或您进行 DBFlow 初始化的任何位置):

FlowManager.init(new FlowConfig.Builder(this).build());
FlowManager.getDatabase(BracketsDatabase.NAME).getWritableDatabase();

在迁移类中,您覆盖 migrate(),然后您可以使用事务管理器来初始化查找数据或其他初始数据库内容。

迁移类:

@Migration(version = 0, database = BracketsDatabase.class)
public class DatabaseInit extends BaseMigration {
private static final String TAG = "classTag";

@Override
public void migrate(DatabaseWrapper database) {
Log.d(TAG, "Init Data...");
populateMethodOne();
populateMethodTwo();
populateMethodThree();
Log.d(TAG, "Data Initialized");
}

要填充数据,请使用您的模型创建记录,并使用事务管理器通过 FlowManager.getDatabase(AppDatabase.class).getTransactionManager() 保存模型
.getSaveQueue().addAll(模型);

关于android - 使用 DBFlow 在查找表中初始化数据的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com