首页 > 系统 > Android > 正文

Android 四大基本组件之ContentProvider(查询单个)

2019-11-09 17:24:33
字体:
来源:转载
供稿:网友

一,自定义内容提供者 (查询单个)

 1,写一个MyContentPRovider类,继承Contentprovider,实现ContentProvider中的方法

@Override    public boolean onCreate() {        Log.i("test","onCreate");        DbUtil dbUtil = new DbUtil(getContext(), "数据库名", null, 2);        db = dbUtil.getReadableDatabase();    }
@Nullable@Overridepublic Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {
return db.query(false,"表名",strings,s,strings1,null,null,s1,null);}

  2,在配置文件中配置基本属性

      <provider

           android:authorities="com.example.android_contentprovider01_PERSON"            android:name="provider.MyContentProvider"            android:exported="true"            >

     </provider>

  3,内容访问者

         获得内容访问者

        ContentResolver cr=getContentResoler();

   public void getdata(View view){
    Uri uri = Uri.parse("content://包名");
    //调用MyContentProvider中的方法
    Cursor cursor=cr.query(uri,null,null,null,null);
    while (cursor.moveToNext()){
    int id=cursor.getInt(cursor.getColumnIndex("_id"));
    String name=cursor.getString(cursor.getColumnIndex("name"));    int age=cursor.getInt(cursor.getColumnIndex("age"));    Log.i("test",id+" "+name+" "+age);
  }
二.,自定义内容提供者(查询单个使用URI匹配器)
//MyContentProvider类中
@Override    public boolean onCreate() {        Log.i("test","onCreate");        DbUtil dbUtil = new DbUtil(getContext(), "数据库名", null, 2);        db = dbUtil.getReadableDatabase();        //实例化URI匹配器        uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);        //添加规则        //01.查询所有           uriMatcher.addURI("包名","aa",1);        //02.查询单个           uriMatcher.addURI("包名","aa/#",2);        return false;    }
   @Nullable
    @Override    public Cursor query(Uri uri, String[] strings, String s, String[] strings1, String s1) {    //根据URI匹配器开始匹配Uri    int code=uriMatcher.match(uri);    switch (code) {        case 1:            //查询所有        Log.i("test","query所有");        //获取数据库中所有的数据        return db.query(false,"aa",strings,s,strings1,null,null,s1,null);        case 2:            //查询单个            //获取# 的值            long id=ContentUris.parseId(uri);        Log.i("test","query单个");        return db.rawQuery("select * from aa where _id=?",new String[]{id+""});    }    return null;}
//内容访问者类中
public void getdata(View view){
//判断输入框的值是否为空
  if(TextUtils.isEmpty(et_main_id.getText().toString())){        uri = Uri.parse("content://包名/aa);    }else{        //查询单个        //1.直接query传参        //2.类似web  http://localhost:8080/webProject/xxx.action?id=3        //3.Uri匹配器        String id=et_main_id.getText().toString();        uri = Uri.parse("content://包名/aa#/"+id);    }    Cursor cursor=cr.query(uri,null,null,null,null);    //SimleCursorAdapter    while (cursor.moveToNext()){        int id=cursor.getInt(cursor.getColumnIndex("_id"));        String name=cursor.getString(cursor.getColumnIndex("name"));        int age=cursor.getInt(cursor.getColumnIndex("age"));        Log.i("test",id+" "+name+" "+age);    }}
}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表