【发布时间】:2014-07-24 17:50:58
【问题描述】:
我正在学习 Android,现在我有关于数据库的课程 - PetTracker。
我使用 Eclipse + 我的手机进行测试。
我想在这个应用程序中重命名字段并且这个工作正常,但如果我在更改后运行应用程序,那么我有错误 - 字段不存在,但如果我在手机上卸载应用程序并再次运行应用程序,那么这个工作正常。
如果我作为应用程序运行,那么我该如何更新数据库?
【问题讨论】:
我正在学习 Android,现在我有关于数据库的课程 - PetTracker。
我使用 Eclipse + 我的手机进行测试。
我想在这个应用程序中重命名字段并且这个工作正常,但如果我在更改后运行应用程序,那么我有错误 - 字段不存在,但如果我在手机上卸载应用程序并再次运行应用程序,那么这个工作正常。
如果我作为应用程序运行,那么我该如何更新数据库?
【问题讨论】:
您应该覆盖 SQLiteOpenHelper 中的 onUpgrade 方法。你应该编写这样的代码。
public void onUpgrade (SQLiteDatabase db,int oldVersion,int newVersion){
String update = ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
db.execSQL(update);
}
Alter Table 为您提供了非常有限的选项来执行对数据库表的更新。如果您想将数据复制到一个全新的结构中,您应该考虑创建临时表,您可以在其中复制数据,创建新架构,然后在此升级方法中将数据从临时表复制到新表。
在创建 DBHelper 时确保您的数据库版本号正确。
【讨论】:
您需要实现onUpgrade() 并在此处编写您的更新表。
您还需要增加您的数据库版本,并在SqliteOpenHelper contructor 中传递一个新版本。
【讨论】: