在sqlite中使用onUpgrade()有什么用?

时间:2016-05-09 12:14:45

标签: android database sqlite

任何人都可以帮助我在sqliteopenhelper类中正确使用onUpgrade()。谢谢。

2 个答案:

答案 0 :(得分:1)

更改数据库表元素或列值时,必须更新数据以反映该更改。 另外,不会出现这样的表或其他类型的错误。 所以在数据库中更改后,如果您的应用程序已经上传,那么您必须更改数据库版本,并在onUpdate()方法中重新创建所有表。

答案 1 :(得分:0)

在Sqliteopenhelper中,您可以定义数据库版本。如果您更改了数据库版本onUpgrade()将被执行。它是onCreate()

的对应物

在onUpgrade中,您将删除旧表并生成新表。

有一个小例子:

public class BaseDatabaseHandler extends SQLiteOpenHelper {

    /********************************************************
     * Database
     ********************************************************/
    private static final int DATABASE_VERSION = 4;
    private static final String DATABASE_NAME = "test.db";


    /********************************************************
     * Table names
     ********************************************************/
    protected static final String TABLE_INPUT = "input";


    /********************************************************
     * Column names
     ********************************************************/

    /* Input*/
    protected static final String COLUMN_ID = "id";
    protected static final String COLUMN_NAME = "name";


    public BaseDatabaseHandler(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {


        String CREATE_INPUT_TABLE =
                "CREATE TABLE " + TABLE_INPUT + " ("
                    + COLUMN_ID + " LONG PRIMARY KEY, "
                    + COLUMN_NAME + " TEXT, "
                    + ")";


        db.execSQL(CREATE_INPUT_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_INPUT);
        onCreate(db);
    }
}