19

操作数据库: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应该不用显式调用,通常很难判断什么时候该回收资源。

Leave a Reply

preload preload preload