04_数据库升级onUpgrade&ondowngrade

如果想操作多个数据库就不要把数据库的名字写死了

    public MyOpenHelper(Context context, String name){
    //第一个参数上下文
        //第二个参数  数据库的名字 如果传入null 就是在内存中创建一个数据库 内存中的数据库在应用退出之后 数据就会丢失
        //如果是聊天记录之类我真正的想给它存起来,下一次再启动还想用那你就要给它存储到一个具体的数据库里面。这个名字就一定要传进来
        //第三个参数 游标工厂 如果使用系统默认的游标工厂就传入null
        //第四个参数  数据库的版本号 用版本号来控制数据库的升级和降级 版本号从1开始
        super(context, "itheima.db", null, 1);
        // TODO Auto-generated constructor stub
    }

把"itheima.db"用String name代替而不是写死了就可以操作多个数据库了.如果写死的话拿到的SQLiteDatabase实际上操作的都是同一个数据库就是这个itheima.db.当数据库文件itheima.db第一次创建的时候,它会走onCreate().一旦我这个数据库文件创建起来之后,再去运行这个项目,这个onCreate()就不会走了.因为它只是当数据库文件第一次创建的时候才会执行onCreate().

onCreate()就是当数据库文件第一次创建的时候被执行。onCreate()做表结构的初始化也可以丢一些初始化的数据。

当数据库升级的时候就会走这个onUpgrade

数据库升级的SQL语句什么时候会被调用?数据库升级就是版本号增加的时候。

        super(context, "itheima.db", null, 2);

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

第一个参数SQLiteDatabase执行具体的SQL.

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7039459.html