您的位置:华清远见教育科技集团 >> 新闻动态 >> Android资料 >> Android开发之使用数据提供者  
 
Android开发之使用数据提供者
分享到:

使用ContentProvider是通过Android组件都具有的ContentResolver对象,通过Uri进行数据操作。程序开发人员只需要知道Uri和数据集的数据格式,则可以进行数据操作,解决不同应用程序间的数据共享问题。

每个Android组件都具有一个ContentResolver对象,获取ContentResolver对象的方法是调用getContentResolver()方法。

代码清单7-53 获取ContentResolver对象


ContentResolver resolver = getContentResolver();

1.查询操作

在获取到ContentResolver对象后,程序开发人员则可以使用query()方法查询目标数据。代码清单7-54所示的代码是查询ID为2的数据。

代码清单7-54 获取ContentResolver对象


String KEY_ID = "_id";
    String KEY_NAME = "name";
    String KEY_AGE = "age";
    String KEY_HEIGHT = "height";

    Uri uri = Uri.parse(CONTENT_URI_STRING + "/" + "2";
    Cursor cursor = resolver.query(uri,
        new String[] {KEY_ID, KEY_NAME, KEY_AGE, KEY_HEIGHT},
                null, null, null);

在Uri中定义了需要查询数据的ID,在query()方法并没有额外声明查询条件。

如果需要获取数据集中的全部数据,则可直接使用CONTENT_URI,此时ContentProvider在分析Uri时将认为需要返回全部数据。ContentResolver的query()方法与SQLite数据库的query()方法非常相似,语法结构如代码清单7-55所示。

代码清单7-55 ContentResolver的query()方法语法


Cursor query(Uri uri, String[] projection, String selection,
                        String[] selectionArgs, String sortOrder)

其中,uri定义了查询的数据集;projection定义了从数据集返回哪些数据项;selection定义了返回数据的查询条件;selectionArgs是对应的实际查询条件;sortOrder是排序方式。

2.添加操作

向ContentProvider中添加数据有两种方法:一种是使用insert()方法,向ContentProvider中添加一条数据;另一种是使用bultInsert()方法,批量地添加数据。

代码清单7-56所示的代码说明了如何使用insert()方法添加单条数据。

代码清单7-56 使用insert()方法添加单条数据


ContentValues values = new ContentValues();
    values.put(KEY_NAME, "Tom");
    values.put(KEY_AGE, 21);
    values.put(KEY_HEIGHT, );
    Uri newUri = resolver.insert(CONTENT_URI, values);

代码清单7-57所示的代码说明了如何使用bultInsert()方法添加多条数据。

代码清单7-57 使用bultInsert()方法添加多条数据


ContentValues[] arrayValues = new ContentValues[10];
    //实例化每一个ContentValues
    int count = resolver.bultInsert(CONTENT_URI, arrayValues);

3.删除操作

删除操作需要使用delete()方法。如果需要删除单条数据,则可以在Uri中指定需要删除数据的ID;如果需要删除多条数据,则可以在selection中声明删除条件。

代码清单7-58所示的代码说明了如何删除ID为2的数据。

代码清单7-58 删除ID为2的数据


Uri uri = Uri.parse(CONTENT_URI_STRING + "/" + "2");
    int result = resolver.delete(uri, null, null);

也可以在selection中将删除条件定义为ID大于4的数据,如代码清单7-59所示。

代码清单7-59 删除条件定义为ID大于4的数据


String selection = KEY_ID + “>4”;
    int result = resolver.delete(CONTENT_URI, selection, null);

4.更新操作

更新操作需要使用update()方法,参数定义与delete()方法相同,同样可以在Uri中指定需要更新数据的ID,也可以在selection中声明更新条件。

代码清单7-60所示的代码说明了如何更新ID为7的数据。

代码清单7-60 更新ID为7的数据


ContentValues values = new ContentValues();
    values.put(KEY_NAME, "Tom");
    values.put(KEY_AGE, 21);
    values.put(KEY_HEIGHT, );
    Uri uri = Uri.parse(CONTENT_URI_STRING + "/" + "7");
    int result = resolver.update(uri, values, null, null);

 更多相关文章

·Android开发之使用Intent发送广播消息
·Android开发之获取Activity返回值
·Android开发之代码建库(SQLiteOpenHelper)
·Android开发之创建ContentProvider
·Android开发之SQLite数据库简介