Android处理数据库版本的更新

Android处理数据库版本的更新,android,database,sqlite,upgrade,Android,Database,Sqlite,Upgrade,有没有关于如何最好地处理android中的数据库升级的文档 我正在开发一个应用程序,并在自己的电话上进行了测试。所有这些都很好,在过去的几次部署中,我不得不向表中添加一些列,这是因为如果旧数据库版本低于某个数据库版本,就会执行升级语句 但是,当我尝试在另一部手机上运行该应用程序时,由于没有以前的版本,因此没有添加该列,因此会出现错误 是否有关于如何处理数据库升级和版本控制的最佳实践或文档?我试着在谷歌上搜索一些具体的问题,但没能从中得到很多好处 以下是我目前使用的相关代码: private st

有没有关于如何最好地处理android中的数据库升级的文档

我正在开发一个应用程序,并在自己的电话上进行了测试。所有这些都很好,在过去的几次部署中,我不得不向表中添加一些列,这是因为如果旧数据库版本低于某个数据库版本,就会执行升级语句

但是,当我尝试在另一部手机上运行该应用程序时,由于没有以前的版本,因此没有添加该列,因此会出现错误

是否有关于如何处理数据库升级和版本控制的最佳实践或文档?我试着在谷歌上搜索一些具体的问题,但没能从中得到很多好处

以下是我目前使用的相关代码:

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的人都很有用,使用它的人越多越好:)

这就是我正在做的,我会用我做过的代码编辑我的文章,但显然我在其中犯了拼写错误。现在很有魅力,谢谢!