该版本在Android的抽象类SQLiteOpenHelper中意味着什么

时间:2014-01-02 08:58:42

标签: android sqliteopenhelper

虚拟类SQLiteOpenHelper的构造函数中有一个名为version的参数(如下所示)

public SQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) {
        this(context, name, factory, version, null);
    }

我想知道的是版本的含义是什么?有人可以帮我吗?

3 个答案:

答案 0 :(得分:1)

它随应用程序一起提供的数据库版本。因此,将来如果要添加表或删除列或与先前数据库版本不同的任何内容。这个版本号将会派上用场。

这是我在升级应用程序时如何编写数据库的示例: 该方法由框架onUpgrade()

定义

班级变量:

private static final int DATABASE_VERSION = 4;

检查当前版本:

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            if (oldVersion < 2) {
                db.execSQL(DATABASE_CREATEX);
            }
            if (oldVersion < 3) {
                db.execSQL(DATABASE_CREATEC);
            }
            if (oldVersion < 4) {
                final String ALTER_TBL = "ALTER TABLE " + DATABASE_TABLE1
                        + " ADD COLUMN Vcost text;";
                final String ALTER_TBL1 = "ALTER TABLE " + DATABASE_TABLE1
                        + " ADD COLUMN Vmedicine text;";
                db.execSQL(ALTER_TBL);
                db.execSQL(ALTER_TBL1);

                final String ALTER_TBL2 = "ALTER TABLE " + DATABASE_TABLE2
                        + " ADD COLUMN Dcost text;";
                final String ALTER_TBL3 = "ALTER TABLE " + DATABASE_TABLE2
                        + " ADD COLUMN Dmedicine text;";
                db.execSQL(ALTER_TBL2);
                db.execSQL(ALTER_TBL3);

            }

        }

因此它会根据数据库的所有版本进行检查,并根据设备上的当前版本进行操作。

答案 1 :(得分:0)

它是您对数据库进行版本化的一种方式,这就是为什么您还需要覆盖onUpgrade方法来处理数据库升级的原因。因此,假设您使用SQLite数据库启动应用程序,然后再更改表格。然后,您将增加数据库版本,当应用程序更新时,将执行onUpgrade方法。

答案 2 :(得分:0)

版本:

数据库的编号(从1开始);如果数据库较旧,则使用onUpgrade(SQLiteDatabase,int,int)来升级数据库;如果数据库较新,则将使用onDowngrade(SQLiteDatabase,int,int)降级数据库

有关详细信息,请访问this