public final Cursor query ()参数解析

  • public final Cursor query (Uri uri, String[] projection,String selection,String[] selectionArgs, StringsortOrder)

    第一个参数,uri是一个唯一的标识用来标识所要访问的Provider

     

    第二个参数,projection,这个参数告诉Provider要返回的内容(列Column当然,下面打印的你就只能显示NAME了,因为你返回的结果不包含ID。

    用null表示返回Provider的所有内容(列Column)。

    第三个参数,selection,设置条件,相当于SQL语句中的where。null表示不进行筛选。如要获得姓名等于张三的,则直接使用”=‘张三’“代替即可

    第四个参数,selectionArgs,这个参数是要配合第三个参数使用的,如果在第三个参数设置有?,那么在selectionArgs写的数据就会代替?。?实际上是占位符的作用,相信写过sql语句的都不难理解

    第五个参数,sortOrder,按照什么进行排序,相当于SQL语句中的Order by。可设置" DESC"”ASC“;默认是升序

    升序,其实默认排序是升序,+" ASC"写不写效果都一样:


转载于:https://my.oschina.net/zaizaiangels/blog/524594

代码如下:package com.example.myapplication; import android.content.ContentProvider; 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; import android.util.Log; public class DatabaseProvider extends ContentProvider { // 授权标识 public static final String AUTHORITY = "com.example.myapplication.provider"; public static final Uri CONTENT_URI = Uri.parse("content://"+AUTHORITY+"/person"); public static final String COLUMN_ID = "id"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_NUMBER = "number"; public static final String COLUMN_ISSTAR = "isstar"; private static int personDir=0;//列表 private static int personItem=1;//单条记录 // 初始化:创建UriMatcher对象,参数UriMatcher.NO_MATCH表示初始状态(无匹配)。 // 添加匹配规则:使用addURI方法,参数为授权(authority)、路径(path)和自定义代码(code)。 // 使用:通过match方法匹配传入的Uri,返回自定义代码,然后根据代码进行相应处理。 private static UriMatcher uriMatcher=new UriMatcher(UriMatcher.NO_MATCH);//初始状态没匹配到任何URI private SQLiteDatabase dbHelper; static {//只在类被加载时执行一次 uriMatcher.addURI(AUTHORITY, "person", personDir); // 整个表,匹配返回匹配吗personDir uriMatcher.addURI(AUTHORITY, "person/#", personItem); // 单条记录,#匹配由任意长度的数字字符组成的字符串 } //uri 映射至程序公开的数据表person //projection 是检索到的每个行所应包含的列的数组。 //selection 指定选择行的条件。 //sortOrder 指定在返回的 Cursor 中各行的显示顺序。 public DatabaseProvider() { } @Override public int delete(Uri uri, String selection, String[] selectionArgs) { // Implement this to handle requests to delete one or more rows. throw new UnsupportedOperationException("Not yet implemented"); } @Override public String getType(Uri uri) { // TODO: Implement this to handle requests for the MIME type of the data // at the given URI. throw new UnsupportedOperationException("Not yet implemented"); } @Override public Uri insert(Uri uri, ContentValues values) { // TODO: Implement this to handle requests to insert a new row. throw new UnsupportedOperationException("Not yet implemented"); } @Override public boolean onCreate() { // TODO: Implement this to initialize your content provider on startup. return false; } @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { switch (uriMatcher.match(uri)){ case 0: Log.i("test","query所有"); return dbHelper.query(false,"person",projection,selection,selectionArgs,null,null,sortOrder,null); case 1: long id= ContentUris.parseId(uri); Log.i("test","query单个"); return dbHelper.rawQuery("select * from person where id=?",new String[]{id+""}); } return null; } @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { // TODO: Implement this to handle requests to update one or more rows. throw new UnsupportedOperationException("Not yet implemented"); } }
最新发布
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值