操作数据库:SQLiteOpenHelper
数据库初始化,会自动调用onCreate(SQLiteDatabase),
写上创建表结构的sql即可:SQLiteDatabase.execSQL(DATABASE_CREATE); //不用自己控制
写程序需要要调用的:
SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();
使用db对象做sql操作:
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_BODY, body);
db.insert(DATABASE_TABLE, null, initialValues)
Notepad例子用了内部类,基于SQLiteOpenHelper:
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, “Upgrading database from version ” + oldVersion + ” to ”
+ newVersion + “, which will destroy all old data”);
db.execSQL(“DROP TABLE IF EXISTS notes”);
onCreate(db);
}
}
onCreate和onUpgrade为抽象方法,所以必须实现了。
拿到操作数据库对象的实例:
DatabaseHelper mDbHelper = new DatabaseHelper(mCtx);
SQLiteDatabase mDb = mDbHelper.getWritableDatabase();
mDb.insert …
mDb.delete …
mDb.query …
mDb.update …
最后 mDbHelper.close();
close应该不用显式调用,通常很难判断什么时候该回收资源。