SQLite的升级

作者: 奔跑的佩恩 | 来源:发表于2017-11-23 11:43 被阅读24次

    sqliteDataBase的升级其实只涉及到创建数据库的那个类,
    下面给出一个类的代码做范例然后做简单讲解

    package com.example.pei.textdemo.sqlite_object;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    /**
     * Title:
     * Description:
     * <p>
     * Created by pei
     * Date: 2017/11/22
     */
    public class ObjectOpenHelper extends SQLiteOpenHelper {
    
        private static final String DB_NAME = "save_object.db";//数据库文件名
        private static SQLiteDatabase INSTANCE;
        private Context mContext;
    
       private static final String CREATE_DB= "CREATE TABLE IF NOT EXISTS person(_id integer NOT NULL PRIMARY KEY AUTOINCREMENT,\n" +
                    "                                data BLOB);";
    
        public SQLiteDatabase getInstance() {
            if (INSTANCE == null) {
                INSTANCE = new ObjectOpenHelper(mContext).getWritableDatabase();
            }
            return INSTANCE;
        }
    
        public ObjectOpenHelper(Context context) {
            this(context, DB_NAME, null, 1);
            this.mContext=context;
        }
    
        public ObjectOpenHelper(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, dbName, factory, version);
        }
    
        //首次创建数据库时调用,一般进行建库建表操作
        @Override
        public void onCreate(SQLiteDatabase db) {
            //创建表
            db.execSQL(CREATE_DB);
        }
    
        //当数据库的版本发生变化的时候会自动执行,禁止人为调用
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
             switch(oldVersion){
                 case 1:
                      //创建表
                      db.execSQL(CREATE_DB);
                 case 2:
                 default:
             }
        }
    
    
    }
    
    

    sqlite数据库一般升级的话只涉及到onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)方法,在这个方法中实现升级时比较粗暴的方法是先删除旧表,然后重建新表,但是这样会很不友好,比较好的处理是用switch做分类处理,注意case中没有break,这样就能保证每个版本功能的顺序执行。

    ok,sqlite升级就讲到这里了,谢谢。

    相关文章

      网友评论

        本文标题:SQLite的升级

        本文链接:https://www.haomeiwen.com/subject/qmfzvxtx.html