在Android中运行时创建数据库

时间:2016-01-29 10:02:54

标签: android sqlite dataprovider

我在我的应用中使用DataProvider来处理CRUD操作。现在DataProvider正在使用SQLiteOpenHelper嵌套的内部类。 CRUD操作的所有定义都在DataProvider本身内定义,SQLiteOpenHelper类负责创建数据库,例如 abc.db ,并定义两个表格 table1 table2 。现在,当用户登录到应用程序时,将创建数据库(显然如果不存在),并使用ContentResolver查询和CursorLoader显示用户的数据以加载到列表中。这部分我已经实现了。

问题出现在多用户场景中。假设用户决定注销并使用其他帐户登录或注册新帐户,因为保留了先前用户的数据,之前的数据也会加载到ListView和/或从其中获取数据的其他视图数据库。根据我的逻辑,可以通过为同一设备上的每个新用户创建新的数据库实例来防止这种情况。但由于ContentProvider在Activity onCreate()之前初始化数据库,我发现这很难实现。有关如何实施的任何想法吗?

1 个答案:

答案 0 :(得分:0)

由于我发现没有其他替代方法,所以我认为保持user_id列是确保多用户可用性而不受干扰的唯一方法。我已经实现了相同的操作,并使用WHERE和当前登录的用户作为user_id=?参数为所有查询添加了一个额外的user_id子句。即使可能,在运行时创建数据库的想法对于我的问题陈述来说可能不是必要的。