Android SQLiteOpenHelper的使用

本文详细介绍了Android中的SQLiteOpenHelper类,包括其基本用法、如何通过继承实现数据库的创建和升级,以及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQLiteOpenHelper

在开发SQLite的过程中为了新建一张数据表,因为数据库不允许同名的数据表存在,所以建表前我们要先判断该表是否存在(见:http://blog.youkuaiyun.com/demonliuhui/article/details/66974609)这种处理方式是十分繁琐的。所以Android提供了SQLiteOpenHelper类来优雅的处理这种问题。
实际项目中很少直接用SQliteDatabase的方法操作数据库,都会集成SQLiteOpenHelper开发子类,并通过getReadableDatabase(),getWriteableDatabase()方法打开数据库。

基本用法

在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。

onCreate(SQLiteDatabase db)

当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。如果数据库不存在,会自动铁观音生成一个,然后再调用onCreate()方法,onCreate()方法在初次调用时才会被调用。重写onCreate()方法时,生成数据表结构,初始化数据。

onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version)

当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。只要某次创建SQLiteOpenHelper是指定的版本号高于之前的版本,会自动出触发该方法,更新表结构

getWritableDatabase(),getReadableDatabase()

getWritableDatabase()以写的方式打开数据库,注意:一旦数据库的磁盘空间满了,数据库就只能读不能写,使用该方法就会出错。而getReadableDatabase()方法先以读写的方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续以只读的方法打开。

代码示例

继承SQLiteOpenHelper

该工具类主要是管理数据库的初始化,并允许该应用程序通过该工具类获取SQliteDatabase对象,注意的是该类无论获取多少次对象,都是同一个相同的对象。同理调用getWritableDatabase(),getReadableDatabase()的也是相同的实例。获取该对象后,就可以利用其操作数据库了。


public class MyDBHelper extends SQLiteOpenHelper {

    public MyDBHelper(Context context, String name, int version) {
        super(context, name, null, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //重写,新建数据表
        db.execSQL("create table dict(_id integer primary key autoincrement, word , detail)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.i("--------", oldVersion + "------->" + newVersion);
    }
   //针对该数据表插入方法的封装
    public static void insertData(SQLiteDatabase db, String[] agres) {
        db.execSQL("insert into dict values(null,?,?)", agres);
    }

  //针对该数据表查询方法的封装
    public static Cursor queryData(SQLiteDatabase db, String key) {
        Cursor cursor = db.rawQuery("select * from dict where word like ? or detail like ?", new String[]{"%" + key + "%", "%" + key + "%"});
        return cursor;
    }
}
获取SQLiteOpenHelper对象
       MyDBHelper myDBHelper;

      //创建对象,指定版本为1,使用相对路径即可,程序会自动保存在数据文件的database目录下
        myDBHelper = new MyDBHelper(this, "myDict.db3", 1);
         myDBHelper.getReadableDatabase();//获取操作实例

Demo

http://download.youkuaiyun.com/detail/demonliuhui/9796649

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值