Android处理数据库版本的更新
有没有关于如何最好地处理android中的数据库升级的文档 我正在开发一个应用程序,并在自己的电话上进行了测试。所有这些都很好,在过去的几次部署中,我不得不向表中添加一些列,这是因为如果旧数据库版本低于某个数据库版本,就会执行升级语句 但是,当我尝试在另一部手机上运行该应用程序时,由于没有以前的版本,因此没有添加该列,因此会出现错误 是否有关于如何处理数据库升级和版本控制的最佳实践或文档?我试着在谷歌上搜索一些具体的问题,但没能从中得到很多好处 以下是我目前使用的相关代码:Android处理数据库版本的更新,android,database,sqlite,upgrade,Android,Database,Sqlite,Upgrade,有没有关于如何最好地处理android中的数据库升级的文档 我正在开发一个应用程序,并在自己的电话上进行了测试。所有这些都很好,在过去的几次部署中,我不得不向表中添加一些列,这是因为如果旧数据库版本低于某个数据库版本,就会执行升级语句 但是,当我尝试在另一部手机上运行该应用程序时,由于没有以前的版本,因此没有添加该列,因此会出现错误 是否有关于如何处理数据库升级和版本控制的最佳实践或文档?我试着在谷歌上搜索一些具体的问题,但没能从中得到很多好处 以下是我目前使用的相关代码: private st
private static final int DATABASE_VERSION = 11;
private static class LocalLoginDatabaseHelper extends SQLiteOpenHelper {
LocalLoginDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG,DATABASE_CREATE);
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion < 11) {
Log.d(TAG + "Upgrade",DATABASE_ALTER);
db.execSQL(DATABASE_ALTER);
}
}
}
private static final int DATABASE_VERSION=11;
私有静态类LocalLoginDatabaseHelper扩展了SQLiteOpenHelper{
LocalLoginDatabaseHelper(上下文){
super(上下文、数据库名称、null、数据库版本);
}
@凌驾
public void onCreate(SQLiteDatabase db){
Log.d(标记、数据库创建);
execSQL(创建数据库);
}
@凌驾
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){
如果(旧版本<11){
Log.d(标签+“升级”,数据库更改);
execSQL(数据库改变);
}
}
}
谢谢
有没有关于如何最好地处理android中的数据库升级的文档
使用,它将在检测到架构更改时为您提供控制,以便您可以升级数据库
更新 但是,当我尝试在另一部手机上运行该应用程序时,由于没有以前的版本,因此没有添加该列,因此会出现错误
您的
数据库\u CREATE
也需要该列。对于新安装(或在用户清除应用程序上的数据后),没有现有数据库,因此onCreate()
,而不是onUpgrade()
,调用。无耻的插件:我知道您已经解决了这个问题,但我正在开发一套开源的DSL,它可以轻松创建SqliteOpenHelper/ContentProvider/Contract API,并通过迁移管理升级
现在还很早,我正在忙着写文档,但是它对任何在Android中使用sqlite的人都很有用,使用它的人越多越好:)这就是我正在做的,我会用我做过的代码编辑我的文章,但显然我在其中犯了拼写错误。现在很有魅力,谢谢!