简介
Android会将我们的持久性数据存储在文件系统中,为了简化我们开发应用时所需要写入的类容,Android提供了多个结构化的存储选项:SharedPreferences、SQLite Database等。
SharedPreferences类会提供通用的框架,使我们可以保存和检索原始数据类型,如布尔型(boolean)、浮点型(float)、整型(int)、长整型(long)和字符串(string)的持久性键值对。
但事实上,SharedPreferences的这种简单的键值对框架无法提供足够的灵活性,因此Android还提供了SQLite。
SQLite是一种轻量级关系型数据库,通过写入和查询语句,以及SQLite变体的结构化查询语言(SQL)来与SQLite数据库互动。
Android提供了SQLiteOpenHelper帮助类来让我们更加方便地管理数据库,对数据库进行创建、更新等操作。
SQLiteOpenHelper是一个抽象类,所以我们需要创建一个自己地抽象类。SQLiteOpenHelper类中有两个抽象方法:onCreate()和onUpgrade(),我们需要在自己的帮助类中重写这两个方法。
SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库,并返回一个可对数据库进行读写操作的对象。
PS:当数据库不可写入的时候,getReadableDatabase()方法返回的对象将以只读的方式打开数据库,而getWritableDatabase()则会出现异常。
SQLiteOpenHelper中有两个构造方法可供重写
SQLiteOpenHelper(Contextcontext,Stringname, SQLiteDatabase.CursorFactory factory, int version)
SQLiteOpenHelper(Contextcontext,Stringname, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler)
通常使用参数少的构造方法。
第一个参数是Context第二个参数是数据库名,创建数据库时使用的就是这里指定的名称。
第三个参数允许我们在查询数据时返回一个自定义的Cursor,一般传入null。
第四个参数表示当前数据库的版本号,用于对数据库进行升级操作。
构建出SQLiteOpenHelper实例后,再调用getReadableDatabase()或getWritableDatabase()方法就能够创建数据库了。
以上参考自:郭霖大神的《第一行代码》
笔者博客:Vinfai