Android SQLite 数据库详细介绍
我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在
很多用户的手机上,如果应用使用到了 SQLite 数据库,我们必须在用户初次使用软件时创
建出应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要
对数据表结构进行更新。那么,我们如何才能实现在用户初次使用或升级软件时自动在用
户的手机上创建出应用需要的数据库表呢?总不能让我们在每个需要安装此软件的手机上
通过手工方式创建数据库表吧?因为这种需求是每个数据库应用都要面临的,所以在
Android 系统,为我们提供了一个名为 SQLiteOpenHelper 的抽象类,必须继承它才能使用,
它是通过对数据库版本进行管理来实现前面提出的需求。
下面我们来看一下 Android SQLite 最常用的几个类和那些方法:
一、SQLiteOpenHelper :
onCreate(SQLiteDatabase db);
用于初次使用软件时生成数据库表。
当调用 SQLiteOpenHelper 的 getWritableDatabase()或者 getReadableDatabase()方法获取用于
操作数据库的 SQLiteDatabase 实例的时候,
如果数据库不存在, Android 系统会自动生成一个数据库,接着调用 onCreate() 方法,
onCreate()方法在初次生成数据库时才会被调用,
在 onCreate()方法里可以生成数据库表结构及添加一些应用使用到的初始化数据
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
在数据库的版本发生变化时会被调用,一般在软件升级时才需改变版本号
getWritableDatabase();
getReadableDatabase();
两方法都可以获取一个用于操作数据库的 SQLiteDatabase 实例。但 getWritableDatabase() 方
法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若
使用 getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打
开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读
方式打开数据库。
二、SQLiteDatabase:
1、db.insert(table, nullColumnHack, values)
第一个参数是表名称,第二个参数是空列的默认值,第三个参数是 ContentValues 类型的一
个封装了列名称和列值的 Map;
2、db.delete(table, whereClause, whereArgs)
第一个参数是表名称,第二个参数是删除条件,第三个参数是删除条件值数组