ContentProvider和ContentResolver还有SQLiteDatabase的关系 看资料不是说SQLiteDatabase可以对数据进行操作嘛,怎么ContentProvider这个也可以,ContentResolver却又可以对ContentProvider的数据进行操作,好乱啊,完全没有思路,谁能给解释下,还有,好像都能实现增删改查 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 数据存取有三种方式:1. contentprovider2. database3. preferrence其中:1. contentprovider是一个接口,可以与其他程序共享数据。其中数据访问部分可以采用访问database, preferrence, 或者存取自定义文件的方式来实现。 ContentResolver可以获取到对应的contentprovider,来控制数据。2. database直接操作数据库,只限于当前程序。3. preferrence操作xml文件,限于当前程序。 什么是SQLiteDatabase? 一个SQLiteDatabase的实例代表了一个SQLite的数据库,通过SQLiteDatabase实例的一些方法,我们可以执行SQL语句,对数据库进行增、删、查、改的操作。需要注意的是,数据库对于一个应用来说是私有的,并且在一个应用当中,数据库的名字也是惟一的。Content Provider:一般是通过ContentResolver。你可以通过getContentResolver()从一个活动或其它应用程序组件的实现里获取一个ContentResolver:查询一个内容提供器Querying a Content Provider你需要三方面的信息来查询一个内容提供器:•用来标识内容提供器的URI•你想获取的数据字段的名字•这些字段的数据类型生成查询Making the query你可以使用ContentResolver.query()方法或者Activity.managedQuery()方法来查询一个内容提供器。两种方法使用相同的参数序列,而且都返回一个Cursor对象批量更新记录Batch updating records要批量更新一组记录(例如,把所有字段中的"NY"改为"New York"),可以传以需要改变的列和值参数来调用ContentResolver.update()方法。删除一个记录Deleting a record要删除单个记录,可以传以一个特定行的URI参数来调用ContentResolver.delete()方法。创建一个内容提供器Creating a Content Provider要创建一个内容提供器,你必须:•建立一个保存数据的系统。大多数内容提供器使用Android的文件储存方法或SQLite数据库来存放它们的数据,但是你可以用任何你想要的方式来存放数据。Android提供SQLiteOpenHelper类来帮助你创建一个数据库以及SQLiteDatabase类来管理它。•扩展ContentProvider类来提供数据访问接口。 ContentResoler通过ContentProvider修改SqlLite的数据,ContentProvider是为SqlLite提供接口的, 在Android系统中,存储数据的方式一共有5种:1.SharedPreferences2.文件存储3.SQLite数据库存储4.ContentProvider5.网络 而ContentProvider是一种让多应用程序之间数据交换的一种接口,就是说在一个应用程序里面将一些数据暴露出来,以供外部访问。外部访问就是通过ContentResolver去访问并操作这些被暴露的数据。 ContentProvider中的里面的数据的存储方式(可以是文件,可以是数据库或其他方式)外界看不到,但是通过它提供的接口可以访问。 在ContentProvider中,数据都是以表的形式组织的。实现一个ContentProvider需要构建一个数据存储系统,这时候可以用数据库的方式去实现。所以,你才会看到有些地方在用ContentProvider的时候又用了SQLite。 补充一下,正是由于ContentProvider中的数据都是以表的形式组织的,所以才会有像数据库一样的增删查改的操作。 说的好...ContentResolver是怎么找到对应的Content Provider的呢 还有种方式是 Files ,类似Preferences SQLiteDatabase对应用的数据库文件进行操作的类;ContentResolver对其他应用程序提供的数据进行操作的类;ContentProvider用来暴露自己应用的数据,供其他应用能够访问的类; ContentResolver对Content Provider的操作方法都有一个参数Uri的,Uri就相当于网址一样,这样就可以找到啦 contentresolver通过Uri找到对应的contentProvider 首先sqlite是私有的,只能在自己的应用程序进行增删改查,现在呢,我们需要让别的应用程序也能更改这个数据库的数据,我们就用一个contentprovider把这个数据库的数据封装,这样就可以实现各应用程序共享了,现在回答contentprovider的增删改查和sqlite中的增删改查有什么关系,因为contentprovider的存储方式是以表的形式存储的,但要存储的数据不一定来源于数据库,所以在contentprovider中也要实现增删改查的方法,当你要对数据库中数据进行增删改查时,此时你可以绑定到该数据库,调用数据库自己的增删改查方法;当你要对其他(文件)进行增删改查时,你可以绑定其他。这样就实现了对数据的增删改查。现在回答ContentResoler的增删改查,因为是各应用程序共享,所以我要在B程序中对A程序中的数据进行更改,我就可以调用ContentResoler的增删改查方法。参数是contentprovider的URI(类似给数据的来源定义一个路径,像域名),这样就绑定到了A程序的数据了,就可以增删改查了。不知道这样说能否解决你的困惑。 app通讯录获取拦截,求解决方案,大牛们!!! JAX-WS的接口怎么让安卓调用?d Android 视频播放问题 webview如何获得页面操作 I909双模发送短信问题 cocos2d移植 从服务器获取N个大图内存溢出问题 Android如何访问其他应用的私有文件夹? 关于android开发时获取两条线的交点坐标问题 怎样把文件中的数据读取到一个数组中 findViewbyid()出现空指针 从服务器向android客户端传送的对象读不出的问题
1. contentprovider
2. database
3. preferrence其中:
1. contentprovider是一个接口,可以与其他程序共享数据。其中数据访问部分可以采用访问database, preferrence, 或者存取自定义文件的方式来实现。 ContentResolver可以获取到对应的contentprovider,来控制数据。
2. database直接操作数据库,只限于当前程序。
3. preferrence操作xml文件,限于当前程序。
一个SQLiteDatabase的实例代表了一个SQLite的数据库,通过SQLiteDatabase实例的一些方法,我们可以执行SQL语句,对数据库进行增、删、查、改的操作。需要注意的是,数据库对于一个应用来说是私有的,并且在一个应用当中,数据库的名字也是惟一的。
Content Provider:
一般是通过ContentResolver。你可以通过getContentResolver()从一个活动或其它应用程序组件的实现里获取一个ContentResolver:
查询一个内容提供器Querying a Content Provider
你需要三方面的信息来查询一个内容提供器:
•用来标识内容提供器的URI
•你想获取的数据字段的名字
•这些字段的数据类型
生成查询Making the query
你可以使用ContentResolver.query()方法或者Activity.managedQuery()方法来查询一个内容提供器。两种方法使用相同的参数序列,而且都返回一个Cursor对象
批量更新记录Batch updating records
要批量更新一组记录(例如,把所有字段中的"NY"改为"New York"),可以传以需要改变的列和值参数来调用ContentResolver.update()方法。
删除一个记录Deleting a record
要删除单个记录,可以传以一个特定行的URI参数来调用ContentResolver.delete()方法。
创建一个内容提供器Creating a Content Provider
要创建一个内容提供器,你必须:
•建立一个保存数据的系统。大多数内容提供器使用Android的文件储存方法或SQLite数据库来存放它们的数据,但是你可以用任何你想要的方式来存放数据。Android提供SQLiteOpenHelper类来帮助你创建一个数据库以及SQLiteDatabase类来管理它。
•扩展ContentProvider类来提供数据访问接口。
1.SharedPreferences
2.文件存储
3.SQLite数据库存储
4.ContentProvider
5.网络 而ContentProvider是一种让多应用程序之间数据交换的一种接口,就是说在一个应用程序里面将一些数据暴露出来,以供外部访问。外部访问就是通过ContentResolver去访问并操作这些被暴露的数据。
ContentProvider中的里面的数据的存储方式(可以是文件,可以是数据库或其他方式)外界看不到,但是通过它提供的接口可以访问。
在ContentProvider中,数据都是以表的形式组织的。实现一个ContentProvider需要构建一个数据存储系统,这时候可以用数据库的方式去实现。所以,你才会看到有些地方在用ContentProvider的时候又用了SQLite。
还有种方式是 Files ,类似Preferences
ContentResolver对Content Provider的操作方法都有一个参数Uri的,Uri就相当于网址一样,这样就可以找到啦