android 更新文件室迁移行

swvgeqrz  于 2023-03-06  发布在  Android
关注(0)|答案(1)|浏览(161)

是否可以通过写迁移来更新某个表的所有以前的数据?
我正在为我的房间数据开发加密,如果我能在迁移后加密所有行就更好了

g2ieeal7

g2ieeal71#

定义迁移时,您可以访问SupportSQLiteDatabase,通过它可以执行SQL查询。您可以使用SQL查询通过update语句更新以前的数据。
你可以用返回Cursor的查询方法来访问旧数据。游标可以用来获取用户的id和密码等信息。最终代码可能如下所示。

val MIGRATION_1_2 = object : Migration(1, 2) {
    override fun migrate(database: SupportSQLiteDatabase) {
        val cursor = database.query("SELECT * FROM user")
        while(cursor.moveToNext()) {
            val id = cursor.getLong(cursor.getColumnIndex("_id"))
            val password = cursor.getString(cursor.getColumnIndex("password"))
            //-- Hash your password --//
            database.execSQL("UPDATE user
                              SET password = hashedPassword
                              WHERE _id = id;")
        }
    }
}

不要忘记更新数据库版本。

相关问题