packagecn.class3g.db;
importcn.class3g.service.DatabaseHelper;
importandroid.content.ContentProvider;
importandroid.content.ContentUris;
importandroid.content.ContentValues;
importandroid.content.UriMatcher;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.net.Uri;
publicclassPersonProviderextendsContentProvider{
privatestaticUriMatchermatcher=newUriMatcher(UriMatcher.NO_MATCH);
privatestaticfinalintPERSONS=1;
privatestaticfinalintPERSON=2;
privateDatabaseHelperdbHelper;
static{
matcher.addURI("cn.class3g.providers.personprovider","person",PERSONS);
matcher.addURI("cn.class3g.providers.personprovider","person/#",
PERSON);
}
publicbooleanonCreate(){
dbHelper=newDatabaseHelper(this.getContext());
returntrue;
}
//content://cn.itcast.provides.personprovider/person
publicUriinsert(Uriuri,ContentValuesvalues){
SQLiteDatabasedb=dbHelper.getWritableDatabase();
longrowId;
switch(matcher.match(uri)){
casePERSONS://向表中添加新纪录并返回其行号
rowId=db.insert("person","personid",values);
returnContentUris.withAppendedId(uri,rowId);
default:
thrownewIllegalArgumentException("UnknowUri:"+uri);
}
}
publicCursorquery(Uriuri,String[]projection,Stringselection,
String[]selectionArgs,StringsortOrder){
SQLiteDatabasedb=dbHelper.getReadableDatabase();
switch(matcher.match(uri)){
casePERSONS:
returndb.query("person",projection,selection,selectionArgs,null,null,sortOrder);
casePERSON:
longpersonid=ContentUris.parseId(uri);
Stringwhere="personid="+personid;
if(selection!=null&&!"".equals(selection)){
where=where+"and"+selection;
}
returndb.query("person",projection,where,selectionArgs,null,null,sortOrder);
default:
thrownewIllegalArgumentException("UnknownUri:"+uri);
}
}
//content://cn.itcast.provides.personprovider/person更新表中的所有记录
//content://cn.itcast.provides.personprovider/person/10更新表中指定id的记录
publicintupdate(Uriuri,ContentValuesvalues,Stringselection,
String[]selectionArgs){
SQLiteDatabasedb=dbHelper.getWritableDatabase();
intnum;
switch(matcher.match(uri)){
casePERSONS://更新指定记录
num=db.update("person",values,selection,selectionArgs);
break;
casePERSON:
longpersonid=ContentUris.parseId(uri);
Stringwhere="personid="+personid;
if(selection!=null){
where+="and"+selection;
}
num=db.update("person",values,where,selectionArgs);
break;
default:
thrownewIllegalArgumentException("UnknowUri"+uri);
}
returnnum;
}
publicintdelete(Uriuri,Stringselection,String[]selectionArgs){
SQLiteDatabasedb=dbHelper.getWritableDatabase();
intnum=0;
switch(matcher.match(uri)){
casePERSONS:
num=db.delete("person",selection,selectionArgs);
break;
casePERSON:
longpersonid=ContentUris.parseId(uri);
Stringwhere="personid="+personid;
if(selection!=null&&!"".equals(selection)){
where=where+"and"+selection;
}
num=db.delete("person",where,selectionArgs);
break;
default:
thrownewIllegalArgumentException("UnknownUri:"+uri);
}
returnnum;
}
publicStringgetType(Uriuri){
switch(matcher.match(uri)){
casePERSONS:
return"vnd.android.cursor.dir/person";
casePERSON:
return"vnd.android.cursor.item/person";
default:
thrownewIllegalArgumentException("UnknownUri:"+uri);
}
}
}
|
相关推荐
从头学Android之ContentProvider示例源代码
该文件是一个Android程序,是关于ContentProvider应用的例子
NULL 博文链接:https://sunzone.iteye.com/blog/1998079
Android中ContentProvider的示例,详细可以参见博客:http://www.cnblogs.com/plokmju/p/android_ContentProvider.html
1、Android Room操作SQLite数据 2、ContentProvider使用,使用Room进行数据库操作
android 自定义 ContentProvider 以及 ContentResolver
Android基于ContentProvider的音乐播放器,通过读取系统多媒体信息,得到储存在外部存储器上的所有音频文件内容,用listview显示歌曲名和歌手信息.并通过mediaPlayer进行播放.该版本只是完成了一个音乐播放器的最简单...
Android学习ContentProvider数据更新与Observer模式一Observer模式意图: 定义对象之间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被更新。 依赖(Dependents)、发布-...
Android中用ContentProvider快速查找通讯录信息的代码清单.pdf 学习资料 复习资料 教学资源
Android高级编程雪梨作业之自定义ContentProvider 将任务01生词本作业中生成的生词本数据库通过自定义ContentProvider的方式,共享给其他应用。 要求如下: (1) 使用自定义SQLiteOpenHelper来管理数据库; (2) 提交...
NULL 博文链接:https://sunzone.iteye.com/blog/1884167
本源码主要是演示Android ContentProvider组件的使用,借助一个写日记小程序来演示组件中各种方法的使用技巧,比如向日记本中插入一条数据,编辑当前数据内容、删除当前数据、查询cursor时候,感兴趣的那些条例如何...
用内容提供者操作文件,传输文件,方便与其他应用通信,免的写数据库。
android开发contentprovider教学ppt(内部资料).pptx
Android知识点ContentProvider篇
Android ContentProvider简单实现
Android应用开发使用ContentProvider以及SQLite实现对数据库的相关操作,可以直接操作数据库,也可以使用ContentProvider来对数据库进行间接操作。
Android中ContentProvider组件详解示例代码
同我前面的资源一样,我的每个功能的实例都是力图实现最简短话...这个实例不讲求大而全的实现ContentProvider的所有功能,而只是为了便于理解而实现。对应于我的博客“How:ContentProvider基本功能核心框架(增删改查)”
Android基础ContentProvider学习教案.pptx