在单个 android 应用程序中使用多用户数据库的房间

kar*_*thi 3 database android accountmanager kotlin android-room

我们可以使用 Room 在单个 android 应用程序中拥有多个数据库吗?我想为每个用户创建一个新数据库。如果 user1 登录,我必须为该用户创建一个数据库,如 UserDB1,如果添加任何新帐户,我必须为该用户创建另一个数据库,如 UserDb2。如果在这些帐户之间发生帐户切换,我应该访问用户特定的数据库。我怎样才能做到这一点?

Sto*_*ony 5

我像下面那样做,

    private static AppDatabase buildDatabase(final Context appContext, int userId) {
    return Room.databaseBuilder(appContext, AppDatabase.class, DATABASE_NAME + "_" + userId)
            .addCallback(new Callback() {
                @Override
                public void onCreate(@NonNull SupportSQLiteDatabase db) {
                    super.onCreate(db);

                }
            })
        .build();
}
Run Code Online (Sandbox Code Playgroud)

我完全理解你的要求。有 3 种方式,(假设只需要一个表 userTable,但实际上我们有更多。)

  1. 为每个登录用户创建一个数据库。(你问的,我也用过)
  2. 只有一个数据库,但是为每个用户创建一个表,比如userTable_1。(Room好像不能支持)
  3. 所有用户只有一个数据库和一个表,所以我们必须在表中添加一个额外的列user_id;如果我们有 20 个表,我们必须将“user_id”添加到所有 20 个表中。(我们大多数时候是在后端开发中做的;但在这种情况下,我真的不喜欢这个)