SQLiteOpenHelper,数据库的创建,升级和降级
SQLiteOpenHelper类
SQLiteOpenHelper 是一个辅助类,负责管理数据库的创建和数据库版本的管理。我们要使用这个类,必须写一个类继承它,并实现它的两个抽象方法:onCreate()和 onUpgrade().oncreate()方法只在数据库创建的时候执行一次,也就是说我们要创建的数据库在SQLite里面还没创建时,才会执行。onUpgrade() 方法用于数据库版本的升级。onDowmgrade() 方法用于数据库版本的降级。
数据库创建
通过SQLiteOpenHelper类来创建一个数据库,首先,创建一个MySQLiteOpenHelper类继承SQLiteOpenHelper类,重写它必须的两个方法,及写一个构造器调用父类的构造器(SQLiteOpenHelper类有两个构造器可选,我们选其中一个即可).在调用SQLiteOpenHelper的构造器时,可以指定要打开的数据库,版本号等,并创建一个SQLiteOpenHelper对象,但并不会创建或打开数据库。在SQLiteOpenHelper中提供了两个方法用来 创建/打开 数据库:getReadableDatabase()和getWritableDatabase().只有在调用这两个方法时,数据库才会创建或打开,并返回一个SQLiteDatabase对象(SQLiteDatabase对象可用于对数据库操作,包括insert,delete等等)。这两个方法的区别是:在某种特殊情况(如磁盘已满),无法对数据库进行写入操作时,getReadableDatabase()将返回一个只读的SQLiteDatabase对象,而getWritableDatabase()将会抛出一个异常。数据库升级
通过实现SQLiteOpenHelper的upgrade() 方法;onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)该方法有三个参数,分别作用为:
- db:SQliteDatabase对象
- oldVersion: 旧的数据库版本号
- newVersion: 新的数据库版本号
当我们创建或需要获取的数据库版本号(也就是newVersion)大于当前系统存在的数据库的版本号(也就是oldVersion) 就会执行该方法。可在该方法内实现升级数据库的代码。根据数据库结构和数据等的差异进行数据库结构修改等。当数据库发布版本较多时,需要考虑到每一个版本的用户,所以需要对每一个版本的差异进行比较修改。
数据库降级
通过onDowngrade()方法实现。降级与升级是相反的,onDowngrade()同样有三个一样的参数,升级是 newVersion 大于 oldVersion 时执行,顾名思义,降级应该就是 oldVersion 大于 newVersion 时执行喽,没错 就是这样的。关于降级的设计关键:- 考虑云端的数据同步
- 考虑到维护成本,可以适当的放弃一些低版本
- 本地数据的迁移(新版本都不删除字段)
package com.example.test4Junit;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteOpenHelper extends SQLiteOpenHelper{
/**
* @param context :上下文对象,用于创建和获取数据库
* @param name : 指定要管理的数据库名称
* @param factory : 指定一个cursor工厂,这里可以为null,让android为我们生成cursor
* @param version : 当前版本号,从 1 开始,用于降级或升级
* */
public MySQLiteOpenHelper(Context context, String name,CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 只在数据库第一次创建时执行。可以用来初始化表结构和添加初始数据
* */
@Override
public void onCreate(SQLiteDatabase db) {
}
/**
* 数据库升级,newVersion > oldVersion 时调用
* @param db:SQliteDatabase对象
* @param oldVersion: 旧的数据库版本号
* @param newVersion: 新的数据库版本号
*
* */
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
/*
* 数据库降级 oldVersion > newVersion 时调用
*/
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

SQLiteOpenHelper是Android中管理SQLite数据库的关键类,用于创建、升级和降级数据库。创建数据库时,需要继承SQLiteOpenHelper并重写onCreate()和onUpgrade()方法。onCreate()仅在数据库首次创建时执行,onUpgrade()则在数据库版本升级时运行,而onDowngrade()在降级数据库时触发。数据库升级和降级需根据版本号差异调整数据库结构和数据。
1390

被折叠的 条评论
为什么被折叠?



