SQLite DBHelper 跨版本更新数据库

前端之家收集整理的这篇文章主要介绍了SQLite DBHelper 跨版本更新数据库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在跨版本升级的时候,每一次的数据库修改都能被全部执行到。
比如用户当前是从第二版程序升级到第三版程序的,那么case 2 中的逻辑就会执行。
而如果用户是直接从第一版程序升级到第三版程序的,那么case 1 和case 2 中的逻辑都会执行。使用这种方式来维护数据库升级,不管版本怎样更新,都可以保证数据库的表结构是最新的。

public class MyDBHelper extends sqliteOpenHelper {
    private Context mcontext;

    public static final String  CREATE_BOOK="create table book("
                                              +"id integer primary key autoincrement,"
                                              +"author text,"
                                              +"price real,"
                                              +"name text)"
                                              ;
    public static final String CREATE_CATEGORY="create table category("
                                             +"id integer primary key autoincrement,"
                                             +"category_name text,"
                                             +"category_code integer)";


    public MyDBHelper(Context context,String name,CursorFactory factory,int version) {
        super(context,name,factory,version);
        mcontext=context;
    }

    @Override
    public void onCreate(sqliteDatabase db) {
        db.execsql(CREATE_BOOK);
    }

    @Override
    public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) {
        switch(oldVersion){
          case 1: //更新数据库时分级更新,每一个case后没有break
              db.execsql(CREATE_BOOK);
          case 2:
              db.execsql(CREATE_CATEGORY);
          case 3:
              db.execsql("alter table book add column category_id integer");
          break;
        }
    }

}
原文链接:https://www.f2er.com/sqlite/198635.html

猜你在找的Sqlite相关文章