Android 简单数据库操作
Android中,通常会用ContentProvider来封装数据库操作接口;
1. 封装数据库的相关字段,
/*
* notes table
*/
public static final class Notes implements BaseColumns {
/*
* title of note
*/
public static final String TITLE = "title";
/*
* body of note
*/
public static final String BODY = "body";
/*
* creating time of a note
*/
public static final String CREATED_DATE = "created";
/*
* modifying time of a note
*/
public static final String MODIFIED_DATE = "modified";
2. 继承SQLiteOpenHelper,生成一个辅助打开SQLite数据库的类,这里主要覆盖方法:onCreate(),onUpdate()
/*
* a helper class TO help create, open and update database
*/
private static final class MyOpenHelper extends SQLiteOpenHelper {
private static final String TABLE_CREATE = "CREATE TABLE " + TABLE_NAME
+ " ( " + Notes._ID + " INTEGER PRIMARY KEY, " + Notes.TITLE
+ " TEXT, " + Notes.BODY + " TEXT, " + Notes.CREATED_DATE
+ " INTEGER, " + Notes.MODIFIED_DATE + " INTEGER " + " ); ";
private static final String TABLE_DROP = "DROP TABLE IF EXISTS "
+ TABLE_NAME;
public MyOpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.v(, "Update database from " + oldVersion + " version to " + newVersion);
db.execSQL(TABLE_DROP);
onCreate(db);
}
}
3. 完成ContentProvider接口的相关方法: query(),insert(),update(),delete()
主要利用上面的辅助类对象,mOpenHelper = new MyOpenHelper(this.getContext());
如:
@Override
public int update(Uri uri, ContentValues values, String where, String[] whereArgs) {
// TODO Auto-generated method stub
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
int count;
switch (sUriMatcher.match(uri)) {
case NOTES:
count = db.update(TABLE_NAME, values, where, whereArgs);
break;
case NOTES_ITEM:
String noteId = uri.getPathSegments().get(1);
count = db.update(TABLE_NAME, values, Notes._ID + "=" + noteId
+ (!TextUtils.isEmpty(where) ? " AND ( " + where + " ) " : ""), whereArgs);
break;
default:
throw new IllegalArgumentException("Unkown Uri: " + uri);
}
return count;
}
这样大致就可以完成简单的数据库访问了,但是到具体的应用中还是相当复杂,须要细致分析!