SQLite操作的核心类 SQLiteDatabase 与 SQLiteOpenHelper

在 Android 中,操作SQLite主要依靠SQLiteDatabase与 SQLiteOpenHelper 这两个类,其中 SQLiteDatabase 是用于执行数据库操作的类,SQLiteOpenHelper 是 SQLiteDatabase 的一个帮助类,用来管理数据库的创建和版本的更新。由于 SQLieDatase 对象是通过 SOLiteOpenHelper调用方法来获得的,因此下面先讲解SQLiteOpenHelper 再讲解 SQLiteDatabase。

1. SQLiteOpenHelper

为什么需要 SQLiteOpenHelper?考虑这样一种需求:在编写数据库应用软件时,开发软件可能会安装在很多用户的手机上,如果应用使用到了 SQLite数据库,就必须在用户初次使用软件时创建出应用使用到的数据库表结构并添加一些初始化记录,另外在软件升级的时候也需要对数据表结构进行更新。那么,如何才能实现在用户初次使用或升级软件时自动在用户手机上创建出应用需要的数据库表呢?总不能让我们在每个需要安装此软件的手机上通过手动方式创建数据库表吧?因为这种需求是每个数据库应用都要面临的,所以Android系统提供了SQLiteOpenHelper的抽象类,通过继承它对数据库版本进行管理来实现前面提出的需求。

一个类在继承 SQLiteOpenHelper 时一般需要实现 onCreate 和 onUpgrade 方法。SQLiteOpenHeper 的主要方法如下所示。

SQLiteOpenHelper类的主要方法

SQLiteOpenHelper(Context context,String name,SQLite Database.CursorFactory factory, int version)  构造方法,一般是传递一个要创建的数据库名称的参数

onCreate(SQLiteDatabase db) 创建数据库时调用

onUpgrade(SQLiteDatabase db,in oldVersion,it newVersion) 版本更新时调用

getReadableDatabase() 创建或打开一个只读数据库

getWritableDatabase() 创建或打开一个读写数据库

为了实现对数据库版本进行管理,SQLiteOpenHelper 类提供了两个重要的方法,分别是 onCreate(SQLiteDatabase db) 和 onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion),前着用于初次使用软件时生成数据库表,后者用于升级软件时更新数据库表结构。

当调用 SQLiteOpenHelper 的 getWritableDatabase()或者 getReadableDatabase()方法获取用于操作数据库的 SQLiteDatabase 实例时,如果数据库不存在,Android 系统将会自动生成一个数据库,接着调用 onCreate()方法。onCreate()方法在初次生成数据库时才会被调用,在 onCreate()方法里可以生成数据库表结构并添加一些应用使用到的初始化数据。

onUpgrade()方法在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号,而数据库的版本是由程序员控制的,假设数据库现在的版本是1,由于业务的变更,修改了数据库表结构,这时就需要升级软件,升级软件时希望更新用户手机里的数据库表结构,为了实现这一目的,可以把原来的数据库版本设置为 2(可以随意设置,大于 1 即可),并在onUpgrade()方法里面实现表结构的更新。当软件的版本升级次数比较多时,在 onUpgrade()方法里面可以根据原版本号和目标版本号进行判断,然后做出相应的表结构及数据更新。

使用 getWritableDatabase()和 getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase 实例,但 getWritableDatabase()方法以读写方式打开数据库。一旦数据库的磁盘空间满了,数据库就只能读而不能写了如果使用 getWriableDatase()打开数据库就会出错, getReadbleDatabase()方法先以读写方式打开数据库,如果

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值