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;
}

 

这样大致就可以完成简单的数据库访问了,但是到具体的应用中还是相当复杂,须要细致分析!

 

posted @ 2013-03-18 23:19  hunterDing  阅读(179)  评论(0编辑  收藏  举报