SQLiteOpenHelper.OnUpgrade(SQLiteDatabase, Int32, Int32) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
需要升级数据库时调用。
[Android.Runtime.Register("onUpgrade", "(Landroid/database/sqlite/SQLiteDatabase;II)V", "GetOnUpgrade_Landroid_database_sqlite_SQLiteDatabase_IIHandler")]
public abstract void OnUpgrade(Android.Database.Sqlite.SQLiteDatabase? db, int oldVersion, int newVersion);
[<Android.Runtime.Register("onUpgrade", "(Landroid/database/sqlite/SQLiteDatabase;II)V", "GetOnUpgrade_Landroid_database_sqlite_SQLiteDatabase_IIHandler")>]
abstract member OnUpgrade : Android.Database.Sqlite.SQLiteDatabase * int * int -> unit
参数
数据库。
- oldVersion
- Int32
旧数据库版本。
- newVersion
- Int32
新的数据库版本。
- 属性
注解
需要升级数据库时调用。 实现应使用此方法删除表、添加表或执行升级到新架构版本所需的任何其他操作。
可 在此处找到 SQLite ALTER TABLE 文档。 如果添加新列,则可以使用 ALTER TABLE 将它们插入实时表中。 如果重命名或删除列,则可以使用 ALTER TABLE 重命名旧表,然后创建新表,然后使用旧表的内容填充新表。
此方法在事务中执行。 如果引发异常,将自动回滚所有更改。
<em>Important:</em> 在发布包含该迁移步骤的生成后,不应修改从版本 X 到 X+1 的现有迁移步骤。 如果迁移步骤出错,并且它在设备上运行,则如果对迁移步骤进行了修复,则以后不会重新运行该步骤。
例如,假设迁移步骤将数据库列foobar重命名为名称baz的开始时间。 如果在生成中释放该迁移步骤并在用户设备上运行,该列将重命名为 bar。 如果开发人员随后编辑此相同的迁移步骤以将名称更改为 baz 预期名称,则已运行此步骤的用户设备仍将具有该名称 bar。 相反,应创建一个新的迁移步骤来更正错误并重命名 bar 为 baz,确保在已运行迁移步骤并出现错误的设备上更正错误。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。