android内容提供器的用法

1.内容提供器的写法,原理就不讲了,主要是为了做笔记用的。测试的功能是在person表中进行增删查改package cn.itcast.db;import android.content.ContentProvider;import cn.itcast.service.DBOpenHelper;import android.content.ContentUris;import android.content.ContentValues;import android.content.UriMatcher;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.net.Uri;public class PersonProvider extends ContentProvider {private DBOpenHelper dbOpenHelper;private static final UriMatcher MATCHER = new UriMatcher(UriMatcher.NO_MATCH);private static final int PERSONS = 1;private static final int PERSON = 2;static{MATCHER.addURI("cn.itcast.providers.personprovider", "person", PERSONS);MATCHER.addURI("cn.itcast.providers.personprovider", "person/#", PERSON);}@Overridepublic boolean onCreate() {dbOpenHelper = new DBOpenHelper(this.getContext());return true;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {SQLiteDatabase db = dbOpenHelper.getReadableDatabase();switch (MATCHER.match(uri)) {case PERSONS:return db.query("person", projection, selection, selectionArgs, null, null, sortOrder);case PERSON:long rowid = ContentUris.parseId(uri);String where = "personid="+ rowid;if(selection!=null && !"".equals(selection.trim())){where += " and "+ selection;}return db.query("person", projection, where, selectionArgs, null, null, sortOrder);default:throw new IllegalArgumentException("this is Unknown Uri:"+ uri);}}@Overridepublic String getType(Uri uri) {switch (MATCHER.match(uri)) {case PERSONS:return "vnd.android.cursor.dir/person";case PERSON:return "vnd.android.cursor.item/person";default:throw new IllegalArgumentException("this is Unknown Uri:"+ uri);}}@Overridepublic Uri insert(Uri uri, ContentValues values) {SQLiteDatabase db = dbOpenHelper.getWritableDatabase();switch (MATCHER.match(uri)) {case PERSONS:long rowid = db.insert("person", "name", values);//主键值// content://cn.itcast.provides.personprovider/person/10Uri insertUri = ContentUris.withAppendedId(uri, rowid);this.getContext().getContentResolver().notifyChange(uri, null);//发出数据变化通知return insertUri;default:throw new IllegalArgumentException("this is Unknown Uri:"+ uri);}}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {SQLiteDatabase db = dbOpenHelper.getWritableDatabase();int num = 0;switch (MATCHER.match(uri)) {case PERSONS:num = db.delete("person", selection, selectionArgs);break;case PERSON:long rowid = ContentUris.parseId(uri);String where = "personid="+ rowid;if(selection!=null && !"".equals(selection.trim())){where += " and "+ selection;}num = db.delete("person", where, selectionArgs);break;default:throw new IllegalArgumentException("this is Unknown Uri:"+ uri);}return num;}@Overridepublic int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {SQLiteDatabase db = dbOpenHelper.getWritableDatabase();int num = 0;switch (MATCHER.match(uri)) {case PERSONS:num = db.update("person", values, selection, selectionArgs);break;case PERSON:long rowid = ContentUris.parseId(uri);String where = "personid="+ rowid;if(selection!=null && !"".equals(selection.trim())){where += " and "+ selection;}num = db.update("person", values, where, selectionArgs);break;default:throw new IllegalArgumentException("this is Unknown Uri:"+ uri);}return num;}}2.使用测试代码package cn.itcast.test;import android.content.ContentResolver;import android.content.ContentValues;import android.database.Cursor;import android.net.Uri;import android.test.AndroidTestCase;import android.util.Log;public class AccessContentProviderTest extends AndroidTestCase {private static final String TAG = "AccessContentProviderTest";public void testInsert() throws Exception{ Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");ContentResolver resolver = this.getContext().getContentResolver();ContentValues values = new ContentValues();values.put("name", "laoli");values.put("phone", "1860103838383");values.put("amount", "50000000000");resolver.insert(uri, values);}public void testDelete() throws Exception{Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person/20");ContentResolver resolver = this.getContext().getContentResolver();resolver.delete(uri, null, null);}public void testUpdate() throws Exception{Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person/1");ContentResolver resolver = this.getContext().getContentResolver();ContentValues values = new ContentValues();values.put("name", "zhangxiaoxiao");resolver.update(uri, values, null, null);}public void testQuery() throws Exception{Uri uri = Uri.parse("content://cn.itcast.providers.personprovider/person");ContentResolver resolver = this.getContext().getContentResolver();Cursor cursor = resolver.query(uri, null, null, null, "personid asc");while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));Log.i(TAG, name);}cursor.close();}}

你可能感兴趣的:(android应用)