`
gryphone
  • 浏览: 433681 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ContentProvider 重复插入解决办法

阅读更多

 重复插入 解决办法:

 

 

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插件化解决方案.docx

    ### ContentProvider插件化解决方案详解 #### 一、概述 ContentProvider是Android四大组件之一,主要功能在于跨进程间安全地共享数据。随着应用规模的增长和技术的发展,ContentProvider的使用场景逐渐多样化,...

    Android+Room+ContentProvider

    在Android应用开发中,数据持久化是一个至关重要的环节,而Android Room和...在实际项目中,如"roomdemo"这样的例子,我们可以看到如何将Room与ContentProvider结合,实现一个完整的数据库操作和数据共享的解决方案。

    ContentProvider

    ContentProvider是Android系统中的四大组件之一,它是应用程序之间数据共享的主要机制。在Android开发中,ContentProvider扮演着数据管家的角色,使得不同的应用可以安全、有序地访问其他应用的数据,而无需暴露具体...

    ContentProvider客户端

    它提供了诸如query、insert、update和delete等方法,用于执行对ContentProvider中的数据进行查询、插入、更新和删除操作。 三、ContentProvider的URI 每个ContentProvider都有一个唯一的URI(Uniform Resource ...

    ContentProvider使用方法demo

    ContentProvider是Android系统中用于数据共享的一个核心组件,它允许应用程序之间进行数据交换,而无需了解对方的具体实现。本教程将深入讲解ContentProvider的使用方法,包括基础操作、多ContentProvider管理和多表...

    ContentProvider的使用Demo

    ContentProvider基于URI(统一资源标识符)的工作机制,使得数据可以被其他应用查询、插入、更新或删除,从而打破了应用之间的数据隔离。本Demo将深入讲解如何创建和使用ContentProvider。 首先,创建...

    android 用ContentProvider操作文件

    在Android系统中,ContentProvider是一种核心组件,它允许应用程序之间共享数据,而无需直接访问对方的内部存储。在本教程中,我们将深入探讨如何利用ContentProvider来操作文件,以及其在跨应用数据传输中的作用。 ...

    android contentprovider使用示例

    通过ContentProvider,应用的数据可以被其他应用查询、插入、更新和删除。 2. **创建ContentProvider** 创建ContentProvider需要继承`android.content.ContentProvider`类,并重写其中的关键方法,如`onCreate()`,...

    ContentProvider多表创建

    ContentProvider主要包含四个核心方法:query(), insert(), update()和delete(),分别对应数据查询、插入、更新和删除操作。为了支持多表,我们需要在ContentProvider的子类中为每个表实现这些方法。 二、数据库...

    ContentProvider源码

    2. `insert(Uri uri, ContentValues values)`:用于插入数据,返回新插入数据的Uri。 3. `delete(Uri uri, String selection, String[] selectionArgs)`:用于删除数据,返回被删除的行数。 4. `update(Uri uri, ...

    ContentProvider自定义以及使用系统ContentProvider

    在Android开发中,ContentProvider是四大组件之一,它扮演着数据共享的角色,使得不同应用程序间可以安全地访问和操作数据。本篇文章将深入探讨如何自定义ContentProvider以及如何使用系统提供的ContentProvider。 ...

    contentProvider监听的例子

    其他方法对应于对数据进行查询、插入、更新和删除的操作。 接着,创建ContentProvider需要在AndroidManifest.xml中声明。声明时,需要指定ContentProvider的权限、URI以及对应的类。例如: ```xml android:name=...

    ContentProvider 翻译

    通过ContentResolver,其他应用可以与ContentProvider进行交互,查询、插入、更新或删除数据。ContentProvider通常用于跨应用的数据共享,比如联系人、短信等核心系统数据就是通过ContentProvider对外提供的。 创建...

    contentprovider

    这些方法分别对应对数据进行查询、插入、更新和删除的操作。 2. **定义Uri匹配规则**:ContentProvider通过Uri(统一资源标识符)来识别和操作数据。你需要在`AndroidManifest.xml`文件中注册ContentProvider,并...

    SQLiteOpenHelper和ContentProvider区别

    应用可以通过ContentResolver与ContentProvider交互,执行查询、插入、更新和删除数据的操作。 ContentProvider的主要特点和用途: 1. 数据共享:ContentProvider是Android系统中实现跨应用数据共享的主要方式。 2....

    ContentProvider案例

    在Android系统中,ContentProvider是四大组件之一,它扮演着数据共享和跨应用数据访问的重要角色。本案例将深入解析ContentProvider的使用方法,并通过实际操作来加深理解。 ContentProvider是Android应用程序之间...

    Android ContentProvider全面解析

    通过ContentResolver,任何应用都可以查询、插入、更新或删除ContentProvider中存储的数据。ContentProvider的结构包括URI、MIME类型和Cursor,这些元素共同构成了数据操作的基础。 二、ContentProvider的主要功能 ...

    用SharePreferences做ContentProvider

    总之,结合 `SharedPreferences` 和 `ContentProvider` 可以实现简单的数据共享,但在实际项目中,根据数据类型和量级,可能需要考虑使用SQLite数据库或更专业的数据存储解决方案。在设计时,应充分权衡性能、效率和...

Global site tag (gtag.js) - Google Analytics