GreenDao数据库降级安装注意事项

来源:互联网 发布:17173捏脸数据 编辑:程序博客网 时间:2024/05/18 09:05
package x'x'x;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;import de.greenrobot.dao.AbstractDaoMaster;import de.greenrobot.dao.identityscope.IdentityScopeType;import x'x'x.TingliMainListDao;import x'x'x.TingliMuluDao;// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT./**  * Master of DAO (schema version 3): knows all DAOs.*/public class DaoMaster extends AbstractDaoMaster {    public static final int SCHEMA_VERSION = 3;    /** Creates underlying database table using DAOs. */    public static void createAllTables(SQLiteDatabase db, boolean ifNotExists) {        TingliMainListDao.createTable(db, ifNotExists);        TingliMuluDao.createTable(db, ifNotExists);    }    /** Drops underlying database table using DAOs. */    public static void dropAllTables(SQLiteDatabase db, boolean ifExists) {        TingliMainListDao.dropTable(db, ifExists);        TingliMuluDao.dropTable(db, ifExists);    }    public static abstract class OpenHelper extends SQLiteOpenHelper {        public OpenHelper(Context context, String name, CursorFactory factory) {            super(context, name, factory, SCHEMA_VERSION);        }        @Override        public void onCreate(SQLiteDatabase db) {            Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION);            createAllTables(db, false);        }    }    /** WARNING: Drops all table on Upgrade! Use only during development. */    public static class DevOpenHelper extends OpenHelper {        public DevOpenHelper(Context context, String name, CursorFactory factory) {            super(context, name, factory);        }        @Override        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {            Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables");            dropAllTables(db, true);            onCreate(db);        }     // 因为我们无法预知未来版本的表结构,向下兼容时最稳妥的方法就是将该版本自己需要的表重构一次        @Override        public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {             dropAllTables(db, true);             onCreate(db);        }    }    public DaoMaster(SQLiteDatabase db) {        super(db, SCHEMA_VERSION);        registerDaoClass(TingliMainListDao.class);        registerDaoClass(TingliMuluDao.class);    }    public DaoSession newSession() {        return new DaoSession(db, IdentityScopeType.Session, daoConfigMap);    }    public DaoSession newSession(IdentityScopeType type) {        return new DaoSession(db, type, daoConfigMap);    }}

注意重写onDowngrade方法,因为我们无法预知未来版本的表结构,向下兼容时最稳妥的方法就是将该版本自己需要的表重构一次

0 0