【【android】】SQLiteOpenHelper实现数据库的增删改查实现数据库的增删改查(封装的思封装的思
想,一个小框架想,一个小框架)
最近学习安卓遇到了对数据库的操作,用到了SQLiteOpenHelper这个类来连接或者创建数据库,通过getWritableDatabase()或者
getReadableDatabase(),来对表进行写入或读取操作。
1. 为什么需要为什么需要SQLiteOpenHelper??
SQLiteOpenHelper重点在于helper,他是SQLiteDatabase的一个帮助类,便于开发者实现对SQLite的数据进行写入(增删改)和读取
(查询)。
2. SQLiteOpenHelper具体有什么方法?具体有什么方法?
使用SQLiteOpenHelper,便是构建一个类将其继承,有三个方法必须实现:
2.1 构造方法构造方法
SQLiteOpenHelper有许多构造方法,最常用的是这种:
public SQLiteOpenHelper(@Nullable Context context,
@Nullable String name,
@Nullable CursorFactory factory,
int version)
{
this(context, name, factory, version, null);
}
可以看见有四个参数,分别是:
上下文
数据库名称
游标工厂
版本号
而其代码块部分调的是另一个构造函数,最后一个参数为null,不需考虑。
2.2 oncreate()方法方法
由于是抽象方法,所以子类一定要实现;
它的作用是数据库第一次创建时,进入执行;一般将创建表的sql语句写进其中。
一个参数:当前连接或者创建的SQLiteDatabase对象
//数据库第一次创建时调用的函数
public abstract void onCreate(SQLiteDatabase db);
2.3 onUpgrade()方法方法
它的作用是数据库的版本号更新(增加时),进入执行;一般将修改表整体结构的sql语句写入其中。
三个参数:当前连接或者创建的SQLiteDatabase对象、旧版本号、新版本号
//数据库版本版本号增加时调用的函数
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
3. 如何使用如何使用SQLiteOpenHelper(具体实例)?(具体实例)?
3.1 数据连接层数据连接层 MySQLiteHelper(名字自拟)(名字自拟)
定义一个类继承SQLiteOpenHelper
我这里类名叫MySQLiteHelper,属性:数据库名demo、表名user、版本1。
注意:子类的构造函数可以只传一个上下文,其余直接赋属性值,因为基本不会变化(特殊情况除外)
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class MySQLiteHelper extends SQLiteOpenHelper {
private final static String DATABASE_NAME= "demo";//数据库名称
private final static String TABLE_NAME= "user";//表名