Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngr

 

package com.example.test_20131218;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

public class DBAdapter {
    private static DBAdapter INSTANCE  = null;
    private DBOpenHelper mHelper = null;
    private SQLiteDatabase mDB = null;
    private DBAdapter(Context context){
        mHelper = new DBOpenHelper(context);
        mDB = mHelper.getWritableDatabase();
    }
    public static DBAdapter getInstance(Context context){
        if(INSTANCE == null){
            return new DBAdapter(context);
        }
        return INSTANCE;
    }
    public void open(){
        if(mDB == null){
            mDB = mHelper.getWritableDatabase();
        }
    }
    
}

 

 

package com.example.test_20131218;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DBOpenHelper extends SQLiteOpenHelper {
    /***
     * 数据库的版本必须大于0,否则报错:
     * java.lang.RuntimeException: Unable to start activity 
     * ComponentInfo{com.example.test_20131218/
     * com.example.test_20131218.MainActivity}: java.lang.IllegalArgumentException: Version must be >= 1, was 0
     */
    public static final int DB_VERSION = 5;
    public static final String DB_NAME = "test20131218.db";
    
    public DBOpenHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        /**
         * 这个方法
         * 1、在第一次打开数据库的时候才会走
         * 2、在清除数据之后再次运行-->打开数据库,这个方法会走
         * 3、没有清除数据,不会走这个方法
         * 4、数据库升级的时候这个方法不会走
         */
        Log.i("xinye", "#############数据库创建了##############:" + DB_VERSION);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        /**
         * 1、第一次创建数据库的时候,这个方法不会走
         * 2、清除数据后再次运行(相当于第一次创建)这个方法不会走
         * 3、数据库已经存在,而且版本升高的时候,这个方法才会调用
         */
        Log.i("xinye", "#############数据库升级了##############:" + DB_VERSION);
        
    }
    @Override
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        /**
         * 执行数据库的降级操作
         * 1、只有新版本比旧版本低的时候才会执行
         * 2、如果不执行降级操作,会抛出异常
         */
        Log.i("xinye", "#############数据库降级了##############:" + DB_VERSION);
        super.onDowngrade(db, oldVersion, newVersion);
    }

}

 

 

 

转载于:https://my.oschina.net/gabriel1215/blog/416762

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值