更新应用程序-Android

时间:2011-04-06 05:10:38

标签: android database

我正在开发Android应用程序。 我的应用程序包含一个本地数据库,位于应用程序的/ assests文件夹中。 当用户安装应用程序时,它会复制数据库以便使用它。然后用户可以向其添加项目。

我的问题是,如果我将发布我的应用程序的更新,它是否会清除数据(删除复制的数据库),从而删除用户对数据库的更改(因为应用程序将再次从assets文件夹复制数据库) ?

3 个答案:

答案 0 :(得分:0)

这完全取决于你如何复制它。你总是复制它而不检查它是否已经存在?然后是的,它可能会。你确实需要向我们展示一些代码才能确定。

答案 1 :(得分:0)

您应该覆盖SQLiteOpenHelper中的onUpgrade方法:

     /*
     * (non-Javadoc)
     * 
     * @see
     * android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite
     * .SQLiteDatabase)
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
        // CREATE TABLE teas (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT
        // NULL, brew_time INTEGER);
        String sql = "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME + " TEXT NOT NULL, " + BREW_TIME + " INTEGER" + ");";
        db.execSQL(sql);
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite
     * .SQLiteDatabase, int, int)
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }

答案 2 :(得分:0)

没有。如果用户正在更新应用程序(不卸载它 - 在这种情况下它将被删除)并且数据库已经存在,那么Android将不仅仅删除它(它可能包含重要信息!)。

而是调用SQLiteOpenHelper的onUpgrade方法,由您决定是要清除数据还是保留数据。