在创建数据库之后创建表是否会更改SQLite中的数据库版本?

时间:2012-01-26 21:08:41

标签: android sqlite

我为Android应用程序创建了一个SQLite数据库。该数据库最初有几个表。

在特定的应用程序版本上,我添加了创建新表的代码(即db.execSQL(“如果不存在则创建表”+ table_name ...),但从未在SQLiteOpenHelper的构造函数中将数据库版本从1更改。

现在我要升级数据库。我的问题是:

现有的已修改数据库是否仍为版本1,或者在创建新表时是否自动增加数据库版本号(即使数据库未通过onUpgrade(...)方法升级)?

提前致谢。

3 个答案:

答案 0 :(得分:1)

是数据库版本,而不是表格版本。因此,删除/重新创建表不会影响数据库版本。

答案 1 :(得分:1)

数据库版本是你在SQLiteOPenHelper中分配的,现在你有2个不同的结构化数据库,版本号相同,真的很糟糕,因为相同的版本号,永远不会调用onUpgrade。

答案 2 :(得分:1)

扩展SQLiteOpenHelper类时,可以定义要使用的数据库版本。例如,通过以下方式:

private static class DbWordsHelper extends SQLiteOpenHelper {

    private DbWordsHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

如果升级数据库,则应在代码中手动更改DB_VERSION并重建应用程序。新版本必须高于上一版本。当SQLiteOpenHelper检测到您的版本号已被更改时,它调用onUpgrade方法,您应该在其中提供如何更新数据库的逻辑:

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        // Here in the future should be method that change the schema of the
        // database. Now we just delete
        try {
            db.execSQL(DROP_TABLE_WORDS);
        } catch (SQLException e) {
            Log.e(TAG, "Error while updating database" + TABLE_WORDS, e);
        }

        onCreate(db);

    }

因此,即使您添加新表,在您在代码中手动执行此操作之前,版本也不会更改。