您的位置:首页 > 编程语言 > PHP开发

ContentProvider内容提供商的简单使用(上)

2016-06-25 21:22 597 查看
<pre name="code" class="java">package com.example.a05262;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;public class MyOpenHelper extends SQLiteOpenHelper {private static final String DB_NAME = "school.db";private static final int VERSION = 1;// 构造器的使用// 参数1. 上下文 从外部传入// 参数2. 数据库名称。可以写一个固定的常量// 参数3. 工厂。// 参数4. 数据库的版本public MyOpenHelper(Context context) {super(context, DB_NAME, null, VERSION);}// 创建数据库时调用// 留意db对象已经通过参数传递到onCreate()中// 说明第一步:创建数据库的操作openOrCreateDatabase()已经做好了// 这里只需要进行第二部:创建表就可以了@Overridepublic void onCreate(SQLiteDatabase db) {// 创建三个表:student course scoreString sql = "CREATE TABLE IF NOT EXISTS [student] (  [_id] INTEGER PRIMARY KEY AUTOINCREMENT, [name] TEXT(10), [age] INTEGER);";db.execSQL(sql);sql = "CREATE TABLE IF NOT EXISTS [course] ([_id] INTEGER PRIMARY KEY AUTOINCREMENT, [name] TEXT(10));";db.execSQL(sql);sql = "CREATE TABLE IF NOT EXISTS [score] ([s_id] INTEGER, [c_id] INTEGER, [score] INTEGER);";db.execSQL(sql);}// 数据库升级时调用@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}
/*** 	继承ContentProvider内容提供商、服务端**		在静态代码块中添加匹配规则:*		content://com.myprorider/student/*		content://com.myprorider/student/1*		content://com.myprorider/student/刘德华**/public class MyProrider extends ContentProvider {//UriMatcher对象,用于对Uri进行匹配private static final UriMatcher MATCHER=new UriMatcher(UriMatcher.NO_MATCH);private MyOpenHelper helper;//数据库的辅助类static{//添加可匹配的uri规则MATCHER.addURI("com.mma", "student", 1);//返回1MATCHER.addURI("com.mma", "student/#", 2);//#匹配所有的数字MATCHER.addURI("com.mma", "student/*", 3);//*匹配所有的字符}@Overridepublic boolean onCreate() {helper=new MyOpenHelper(getContext());return false;}@Override// 查询public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {SQLiteDatabase db=helper.getReadableDatabase();int match=MATCHER.match(uri);switch (match) {case 1:return db.query("student",projection,selection,selectionArgs,null,null,null);case 2:long id=ContentUris.parseId(uri);String where="_id="+id;if(selection!=null && !"".endsWith(selection)){where+=" AND "+selection;}return db.query("student",projection,where,selectionArgs,null,null,sortOrder);case 3:String path=uri.getLastPathSegment();//获取uri的后面的名字String where1="name= '"+path+"'";if(selection!=null && !"".equals(selection)){where1+=" AND "+selection;}return db.query("student", projection,where1,selectionArgs,null, null, null);default:break;}return null;}@Overridepublic String getType(Uri uri) {return null;}@Override//插入public Uri insert(Uri uri, ContentValues values) {/*	//对传入的uri进行匹配int match=MATCHER.match(uri);Log.i("MainActivity", match+"");*/SQLiteDatabase db=helper.getWritableDatabase();int match=MATCHER.match(uri);switch (match) {case 1:long id=db.insert("student",null, values);//给uri添加idreturn ContentUris.withAppendedId(uri, id);default:break;}return null;}@Override//删除public int delete(Uri uri, String selection, String[] selectionArgs) {SQLiteDatabase db=helper.getWritableDatabase();int match=MATCHER.match(uri);switch (match) {case 1:return	db.delete("student",selection,selectionArgs);case 2:long id=ContentUris.parseId(uri);// 获得uri的idString where="_id="+id;//id等于传进来的idif(selection!=null && "".equals(selection)){where+=" AND "+selection;}return	db.delete("student",where, selectionArgs);case 3:String path=uri.getLastPathSegment();//获取uri后面的字符return db.delete("student", "name=?", new String[]{path});default:break;}return 0;}@Override//修改public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {SQLiteDatabase db=helper.getWritableDatabase();int match=MATCHER.match(uri);switch (match) {case 1:return db.update("student",values,selection,selectionArgs);case 2:long id=ContentUris.parseId(uri);//获得传进来的uri后面的idString where="_id="+id;return db.update("student", values, where, selectionArgs);case 3:String path=uri.getLastPathSegment();db.update("student", values, "name=?", new String[]{path});break;default:break;}return 0;}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息