加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite数据库的SQLiteOpenHelper帮助类

发布时间:2020-12-12 19:43:53 所属栏目:百科 来源:网络整理
导读:SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabse,int oldVersion,int newVersion)来创建和更新数

SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本更新。一般的用法是定义一个类继承SQLiteOpenHelper,并实现两个回调方法,OnCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabse,int oldVersion,int newVersion)来创建和更新数据库。对数据库中的表数据进行更新时,如删除字段、添加字段、增加约束等,需要更新数据库,即更新数据库版本号VERSION,此时在数据的实现方法中调用DataBaseHelper 类时,就需要使用public DataBaseHelper (Context context,int version)此构造方法。
下面是我写的继承SQLiteOpenHelper的帮助类
实例:DataBaseHelper.java

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

public class DataBaseHelper extends SQLiteOpenHelper {
    private static final int VERSION=1;
    public static final String DBNAME = "diary.db";
    //SQLiteOpenHelper子类必须要的一个构造函数,传递一个参数的, 数据库名字和版本号都写死了 
    public DataBaseHelper (Context context){
        //必须通过super 调用父类的构造函数 
        super(context,DBNAME,null,VERSION);
    }

    //数据库的构造函数,用于更新数据库
    public DataBaseHelper (Context context,int version){
        super(context,version);
    }

    //回调函数,第一次创建时才会调用此函数,创建一个数据库 
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE diary (diaryId integer primary key autoincrement,"
                + "title TEXT,time TEXT,week TEXT,weather TEXT,body TEXT)";
        db.execSQL(sql);
    }

    //回调函数,当你构造DBHelper的传递的Version与之前的Version调用此函数 
    @Override
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
        if(oldVersion == 1 && newVersion == 2.1){
            try{
                 db.beginTransaction();
                 String upgradeSql="ALTER TABLE diary ADD COLUMN sid TEXT UNIQUE";
                 db.execSQL(upgradeSql);
                 db.setTransactionSuccessful();
             }catch(Exception ex){
                     ex.printStackTrace();
             }finally{
                     db.endTransaction();
             }
        }
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读