日期:2014-05-16 浏览次数:20448 次
[coolxing按: 转载请注明作者和出处, 如有谬误, 欢迎在评论中指正.]
?
获取SQLiteDatabase实例: 可以通过SQLiteDatabase类的静态方法获取其实例对象, 更一般的做法是通过SQLiteOpenHelper类创建SQLiteDatabase对象.
创建一个SQLiteOpenHelper子类, 并重写其onCreate()和onUpgrade()方法.
public class DbOpenHelper extends SQLiteOpenHelper {
public DbOpenHelper(Context context) {
// xing.db表示数据库的名称
// null表示使用系统默认的游标工厂对象
// 最后一个参数表示数据库的版本号, 版本号不能为0, 否则会导致onCreate方法不被执行
// 可查询源代码得知.
// 数据库文件存储在data/data/<package name>/databases目录下
super(context, "xing.db", null, 1);
}
/**
?* 数据库被创建时自动调用, 该方法一般完成建表操作
?*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE person(_id integer primary key autoincrement, name varchar(20), phone varchar(11), amount integer)");
}
/**
?* 数据库版本号改变时自动调用该方法 . 如果软件升级时涉及数据库表结构的改变, 可以在此方法中完成相关编码.
?*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
调用SQLiteOpenHelper子类对象的getReadableDatabase()方法或getWriteableDatabase()方法可以获得SQLiteDatabase实例, 如果此时数据库不存在,?android系统会自动生成一个数据库, 接着调用onCreate(SQLiteDatabase db)方法, 并将生成的数据库对象作为参数传递给该方法,?一般来说需要在onCreate方法中进行创建表的操作. 当数据库的版本更新时, 将回调onUpgrade()方法.
getWriteableDatabase()方法以读写方式打开数据库, 一旦数据库的磁盘空间满了, 数据库只能读而不能写, 这时程序就会出错. 而getReadableDatabase()方法会先尝试以读写的方式打开数据库, 一旦发生磁盘已满数据库只能读不能写的情况, 就会转而以只读的方式打开数据库, 程序也就不会出错.
?
数据库的增删改查. 获得SQLiteDatabase实例后, 就可调用其相应的方法以操作数据:
|--void execSQL (String sql): 执行SQL语句.
|--void execSQL (String sql, Object[] bindArgs): 执行带占位符的SQL语句.
|--Cursor rawQuery (String sql, String[] selectionArgs): 执行带占位符的查询语句并返回Cursor对象.
SQLiteDatabase类还包含一些具体的增删改查方法, 以方便对SQL语句不熟悉的开发者. 如果你熟悉常用的SQL语句,