首页

操作多个共享表

搜索

概述
ContentProvider提供了对本项目中多个共享数据表的操作。如此,其它项目可对本项目中多个共
享的数据表进行操作。
操作步骤
步骤1、在项目中创建MySQLiteHelper类,该类是SQLiteOpenHelper的子类。用于创建本项目的数
据库、表。
步骤2、在项目中创建MyProvider,该类是ContentProvider的子类。在该类中完成以下功能:
2.1提供对本项目数据库的增删改查操作的方法。
2.2.创建一个UriMatcher常量,示例代码如下:
private static final UriMatcher URI_MATCHER=
new UriMatcher(UriMatcher.NO_MATCH);
2.3.使用静态块初始化URI_MATCHER
static{
URI_MATCHER.addURI("com.mt.exerl8_03.myProvider”,"person",
PERSON);
URI_MATCHER.addURI("com.mt.exerl8_ 03.myProvider”,"student",
SDUTENT);
}
提示:以上将两个数据表的访问地址添加到了URI_MATCHER,一个是person表,一个是
student表.
2.4在增删改查方法中,使用URI_ MATCHER来匹配其它应用传入的Uri,例如,query方法:
public Cursorquery(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder){
SQLiteDatabase db=mSQLiteHelper.getReadableDatabase();
String tableName="";
//以下对uri进行匹配
switch (URI_MATCHER.match(uri)){
case PERSON:
tableName=Persons.TABLE_PERSON_NAME;
break;
case STUDENTP:
tableName=Persons.TABLE_STUDENT_NAME
break;
}
//执行查询表的操作
Cursor cursor=db.query(tableName, projection, selection,
electionArgs, null, null, sortOrder);
return cursor;
}
2.5在项目清单文件中注册MyProvider,代码如下所示:
<provider
android:name= ".MyProvider"
android:authorities="com.mt.exerl8_03.myProvider"/>
步骤3、运行本项目。
步骤4、创建另一个项目,在该项目中:
4.1定义两个Uri对象,分别提供了上一个项目中两个数据表的地址。
/*以下解析的字符串是项目exerl8_ 03清单文件中<Provider>标签的authorities属性的值。
*并提供了person和studen标志,表示操作person表和student表
*/
private static final Uri URI_PERSON=Uri.parse("content://com.mt.exerl8_3.myProvider/person");
//student表示操作student表
private static final Uri URI_STUDENT=Uri.parse("content://com.mt.exerl8_3.myProvider/student");
4.2.以下是读取上一个项目的person表中所有记录,并显示在垂直列表中。
ListView IistView=(ListView) findViewById(R.id.listView);
// 4.2.1.创建MySQLiteOpenHelper对象
mResolver=getContentResoIver();
//4.2.2.读取person数据表中所有记录
mCursor=mResolver.query(URI_PERSON, null, null, null, null);
// 4.2.3.创建SimpIeCursorAdapte时象
mAdapter=new SimpleCursorAdapter(this,
R.layout.listview_item,
mCursor, new String[]{Persons.COLUMN_NAME,
Persons.COLUMN_PHONE},
new int[]{R.id.tvName,R.id.tvPhone});
//4.2.3.4.垂直列表控件与游标适配器对象相关联
IistView.setAdapter(mAdapter);
说明:
以上的4.2.2.查询的是person表,该query方法会调用上一个项目中MyProvider类中的同
名方法进行查询。
若要查询student表,则将4.2.2.中的URI_ PERSON改为URI_ STUDENT
步骤5、运行本项目。

 

上一页 下一页