uda*_*day 5 android android-sqlite android-room
如果用户从应用程序注销,我将使用以下命令一一清除表中的数据
@Query("DELETE FROM tableName")
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用下面的代码一一清除所有表的 sqlite_sequence 。
database = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, DatabaseMeta.DB_NAME)
.build();
database.query("DELETE FROM sqlite_sequence WHERE name = ?", new Object[]{"tableName"})
Run Code Online (Sandbox Code Playgroud)
不幸的是,清算sqlite_sequence不起作用。所以如果用户再次登录,那么起始rowId不会从1开始创建。
还有其他方法可以做到这一点吗?我尝试清除整个数据库,并在用户再次登录后添加新条目。
Room Database 似乎不支持通过 DAO 或原始查询编辑 sqlite_sequence 表。相反,这是我解决这个问题的方法(Kotlin):
class NonRoomDb(context:Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_VERSION) {
override fun onCreate(db: SQLiteDatabase?) {}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {}
}
fun resetPointer(context:Context, tableName:String) {
val nonRoomDb = NonRoomDb(context)
nonRoomDb.writableDatabase.execSQL("DELETE FROM sqlite_sequence WHERE name='$tableName';")
nonRoomDb.close()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2681 次 |
| 最近记录: |