重复插入 解决办法:
1. 因为ContentProvider 所拥有的函数接口 比如:insert delete update onCreate 都已经固定 不支持自定义 所以我打算以patch的形式
2. 函数原型
public class ResolverUtility {
/* - insertUnique
* - arguments:
* * cr : ContentResolver instance to use
* * uri : target w/ Uri format to insert
* * cv : ContentValues to insert
* * uid : unique column to replace
*
* - return:null
*/
public static void insertUnique(ContentResolver cr,
Uri uri, ContentValues cv, String uid){
String scase = (String)cv.get(uid);
String selection = "name = '"+scase+"'";
Cursor c = cr.query(uri, null, selection, null, null);
if(c.getCount() > 0){
cr.update(uri, cv, selection, null);
}
else {
cr.insert(uri, cv);
}
}
}
2. 原理:
其实 原理很简单 即:
在新插入数据之前 先查询指定列的值 并以之为条件 查询是否存在 该数据
如果存在 则调用update() 方法更新目标
如果不存在 则调用insert()方法插入之
3. 如何使用:
ContentValues uvalues = new ContentValues();
uvalues.put(CHelper.NAME, "griffinshi");
uvalues.put(CHelper.NUMBER, 7686);
uvalues.put(CHelper.HOME, "Jiangsu");
ResolverUtility.insertUnique(cResolver, CHelper.CONTENT_URI, uvalues, CHelper.NAME);
结束!
分享到:
相关推荐
### ContentProvider插件化解决方案详解 #### 一、概述 ContentProvider是Android四大组件之一,主要功能在于跨进程间安全地共享数据。随着应用规模的增长和技术的发展,ContentProvider的使用场景逐渐多样化,...
在Android应用开发中,数据持久化是一个至关重要的环节,而Android Room和...在实际项目中,如"roomdemo"这样的例子,我们可以看到如何将Room与ContentProvider结合,实现一个完整的数据库操作和数据共享的解决方案。
ContentProvider是Android系统中的四大组件之一,它是应用程序之间数据共享的主要机制。在Android开发中,ContentProvider扮演着数据管家的角色,使得不同的应用可以安全、有序地访问其他应用的数据,而无需暴露具体...
它提供了诸如query、insert、update和delete等方法,用于执行对ContentProvider中的数据进行查询、插入、更新和删除操作。 三、ContentProvider的URI 每个ContentProvider都有一个唯一的URI(Uniform Resource ...
ContentProvider是Android系统中用于数据共享的一个核心组件,它允许应用程序之间进行数据交换,而无需了解对方的具体实现。本教程将深入讲解ContentProvider的使用方法,包括基础操作、多ContentProvider管理和多表...
ContentProvider基于URI(统一资源标识符)的工作机制,使得数据可以被其他应用查询、插入、更新或删除,从而打破了应用之间的数据隔离。本Demo将深入讲解如何创建和使用ContentProvider。 首先,创建...
在Android系统中,ContentProvider是一种核心组件,它允许应用程序之间共享数据,而无需直接访问对方的内部存储。在本教程中,我们将深入探讨如何利用ContentProvider来操作文件,以及其在跨应用数据传输中的作用。 ...
通过ContentProvider,应用的数据可以被其他应用查询、插入、更新和删除。 2. **创建ContentProvider** 创建ContentProvider需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`,...
ContentProvider主要包含四个核心方法:query(), insert(), update()和delete(),分别对应数据查询、插入、更新和删除操作。为了支持多表,我们需要在ContentProvider的子类中为每个表实现这些方法。 二、数据库...
2. `insert(Uri uri, ContentValues values)`:用于插入数据,返回新插入数据的Uri。 3. `delete(Uri uri, String selection, String[] selectionArgs)`:用于删除数据,返回被删除的行数。 4. `update(Uri uri, ...
在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地访问和操作数据。本篇文章将深入探讨如何自定义ContentProvider以及如何使用系统提供的ContentProvider。 ...
其他方法对应于对数据进行查询、插入、更新和删除的操作。 接着,创建ContentProvider需要在AndroidManifest.xml中声明。声明时,需要指定ContentProvider的权限、URI以及对应的类。例如: ```xml android:name=...
通过ContentResolver,其他应用可以与ContentProvider进行交互,查询、插入、更新或删除数据。ContentProvider通常用于跨应用的数据共享,比如联系人、短信等核心系统数据就是通过ContentProvider对外提供的。 创建...
这些方法分别对应对数据进行查询、插入、更新和删除的操作。 2. **定义Uri匹配规则**:ContentProvider通过Uri(统一资源标识符)来识别和操作数据。你需要在`AndroidManifest.xml`文件中注册ContentProvider,并...
应用可以通过ContentResolver与ContentProvider交互,执行查询、插入、更新和删除数据的操作。 ContentProvider的主要特点和用途: 1. 数据共享:ContentProvider是Android系统中实现跨应用数据共享的主要方式。 2....
在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的重要角色。本案例将深入解析ContentProvider的使用方法,并通过实际操作来加深理解。 ContentProvider是Android应用程序之间...
通过ContentResolver,任何应用都可以查询、插入、更新或删除ContentProvider中存储的数据。ContentProvider的结构包括URI、MIME类型和Cursor,这些元素共同构成了数据操作的基础。 二、ContentProvider的主要功能 ...
总之,结合 `SharedPreferences` 和 `ContentProvider` 可以实现简单的数据共享,但在实际项目中,根据数据类型和量级,可能需要考虑使用SQLite数据库或更专业的数据存储解决方案。在设计时,应充分权衡性能、效率和...