android.database.sqlite.SQLiteDatabase#insertWithOnConflict ( )源码实例Demo

下面列出了android.database.sqlite.SQLiteDatabase#insertWithOnConflict ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: opentasks-provider   文件: FTSDatabaseHelper.java
/**
 * Inserts NGrams relations for a task entry.
 * 
 * @param db
 *            A writable {@link SQLiteDatabase}.
 * @param ngramIds
 *            The set of NGram ids.
 * @param taskId
 *            The row id of the task.
 * @param propertyId
 *            The row id of the property.
 * @param The
 *            entry type of the relation (title, description, property).
 */
private static void insertNGramRelations(SQLiteDatabase db, Set<Long> ngramIds, long taskId, Long propertyId, int contentType)
{
	ContentValues values = new ContentValues(4);
	for (Long ngramId : ngramIds)
	{
		values.put(FTSContentColumns.TASK_ID, taskId);
		values.put(FTSContentColumns.NGRAM_ID, ngramId);
		values.put(FTSContentColumns.TYPE, contentType);
		if (contentType == SearchableTypes.PROPERTY)
		{
			values.put(FTSContentColumns.PROPERTY_ID, propertyId);
		}
		else
		{
			values.putNull(FTSContentColumns.PROPERTY_ID);
		}
		db.insertWithOnConflict(FTS_CONTENT_TABLE, null, values, SQLiteDatabase.CONFLICT_IGNORE);
	}

}
 
源代码2 项目: journaldev   文件: FavouritesViewModel.java
public Favourites addFav(String url, long date) {

        Log.d("API123", "addFav " + url);

        SQLiteDatabase db = mFavHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DbSettings.DBEntry.COL_FAV_URL, url);
        values.put(DbSettings.DBEntry.COL_FAV_DATE, date);
        long id = db.insertWithOnConflict(DbSettings.DBEntry.TABLE,
                null,
                values,
                SQLiteDatabase.CONFLICT_REPLACE);
        db.close();
        Favourites fav = new Favourites(id, url, date);
        mFavs.add(fav);
        return new Favourites(fav);
    }
 
源代码3 项目: kcanotify_h5-master   文件: KcaDBHelper.java
public void putQuest(int key, String value, int type) {
    Date currentTime = getJapanCalendarInstance().getTime();
    SimpleDateFormat df = getJapanSimpleDataFormat("yy-MM-dd-HH");
    String time = df.format(currentTime);

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("KEY", key);
    values.put("VALUE", value);
    values.put("TYPE", type);
    values.put("TIME", time);

    int u = db.update(questlist_table_name, values, "KEY=?", new String[]{String.valueOf(key)});
    if (u == 0) {
        db.insertWithOnConflict(questlist_table_name, null, values, SQLiteDatabase.CONFLICT_REPLACE);
    }
    qt.addQuestTrack(key);
}
 
源代码4 项目: Audinaut   文件: SongDBHandler.java
private synchronized void addSongsImpl(SQLiteDatabase db, int serverKey, List<Pair<String, String>> entries) {
    db.beginTransaction();
    try {
        for (Pair<String, String> entry : entries) {
            ContentValues values = new ContentValues();
            values.put(SONGS_SERVER_KEY, serverKey);
            values.put(SONGS_SERVER_ID, entry.getFirst());
            values.put(SONGS_COMPLETE_PATH, entry.getSecond());
            // Util.sleepQuietly(10000);

            db.insertWithOnConflict(TABLE_SONGS, null, values, SQLiteDatabase.CONFLICT_IGNORE);
        }

        db.setTransactionSuccessful();
    } catch (Exception ignored) {
    }

    db.endTransaction();
}
 
源代码5 项目: android_9.0.0_r45   文件: AccountsDb.java
long insertOrReplaceMetaAuthTypeAndUid(String authenticatorType, int uid) {
    SQLiteDatabase db = mDeDatabase.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(META_KEY,
            META_KEY_FOR_AUTHENTICATOR_UID_FOR_TYPE_PREFIX + authenticatorType);
    values.put(META_VALUE, uid);
    return db.insertWithOnConflict(TABLE_META, null, values,
            SQLiteDatabase.CONFLICT_REPLACE);
}
 
源代码6 项目: kcanotify   文件: KcaDBHelper.java
public void putValue(String key, String value) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("KEY", key);
    values.put("VALUE", value);
    int u = db.update(table_name, values, "KEY=?", new String[]{key});
    if (u == 0) {
        db.insertWithOnConflict(table_name, null, values, SQLiteDatabase.CONFLICT_REPLACE);
    }
}
 
源代码7 项目: shinny-futures-android   文件: DatabaseHelper.java
synchronized long insertKeyValueContentValuesIntoTable(SQLiteDatabase db, String table, ContentValues contentValues) throws SQLiteException, StackOverflowError {
    return db.insertWithOnConflict(
            table,
            null,
            contentValues,
            SQLiteDatabase.CONFLICT_REPLACE
    );
}
 
源代码8 项目: kcanotify_h5-master   文件: KcaDBHelper.java
public void putResVer(String filename, long version) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("file", filename);
    values.put("version", version);
    int u = db.update(resver_table_name, values, "file=?", new String[]{filename});
    if (u == 0) {
        db.insertWithOnConflict(resver_table_name, null, values, SQLiteDatabase.CONFLICT_REPLACE);
    }
}
 
源代码9 项目: kcanotify_h5-master   文件: KcaDBHelper.java
public void putValue(String key, String value) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("KEY", key);
    values.put("VALUE", value);
    int u = db.update(table_name, values, "KEY=?", new String[]{key});
    if (u == 0) {
        db.insertWithOnConflict(table_name, null, values, SQLiteDatabase.CONFLICT_REPLACE);
    }
}
 
源代码10 项目: kcanotify_h5-master   文件: KcaDBHelper.java
public void putItemValue(int key, String value) {
    SQLiteDatabase db = this.getWritableDatabase();
    JsonObject obj = new JsonParser().parse(value).getAsJsonObject();
    int slotitem_id = obj.get("api_slotitem_id").getAsInt();
    ContentValues values = new ContentValues();
    values.put("KEY", key);
    values.put("KCID", slotitem_id);
    values.put("VALUE", value);
    int u = db.update(slotitem_table_name, values, "KEY=?", new String[]{String.valueOf(key)});
    if (u == 0) {
        db.insertWithOnConflict(slotitem_table_name, null, values, SQLiteDatabase.CONFLICT_REPLACE);
    }
}
 
源代码11 项目: androidtv-Leanback   文件: VideoProvider.java
@Override
public int bulkInsert(@NonNull Uri uri, @NonNull ContentValues[] values) {
    switch (sUriMatcher.match(uri)) {
        case VIDEO: {
            final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
            int returnCount = 0;

            db.beginTransaction();
            try {
                for (ContentValues value : values) {
                    long _id = db.insertWithOnConflict(VideoContract.VideoEntry.TABLE_NAME,
                            null, value, SQLiteDatabase.CONFLICT_REPLACE);
                    if (_id != -1) {
                        returnCount++;
                    }
                }
                db.setTransactionSuccessful();
            } finally {
                db.endTransaction();
            }

            mContentResolver.notifyChange(uri, null);
            return returnCount;
        }
        default: {
            return super.bulkInsert(uri, values);
        }
    }
}
 
源代码12 项目: cannonball-android   文件: PoemProvider.java
@Override
public Uri insert(Uri uri, ContentValues values) {
    final SQLiteDatabase db = dbHelper.getWritableDatabase();
    final long id = db.insertWithOnConflict(PoemContract.TABLE, null, values,
            SQLiteDatabase.CONFLICT_IGNORE);

    if (id > 0) {
        getContext().getContentResolver().notifyChange(uri, null);
        return ContentUris.withAppendedId(uri, id);
    } else {
        Crashlytics.log("PoemProvider: not able to insert a poem in Database");
        return null;
    }
}
 
源代码13 项目: opentasks-provider   文件: FTSDatabaseHelper.java
/**
 * Inserts NGrams into the NGram database.
 * 
 * @param db
 *            A writable {@link SQLiteDatabase}.
 * @param ngrams
 *            The set of NGrams.
 * @return The ids of the ngrams in the given set.
 */
private static Set<Long> insertNGrams(SQLiteDatabase db, Set<String> ngrams)
{
	Set<Long> nGramIds = new HashSet<Long>(ngrams.size());
	ContentValues values = new ContentValues(1);
	for (String ngram : ngrams)
	{
		values.put(NGramColumns.TEXT, ngram);
		long nGramId = db.insertWithOnConflict(FTS_NGRAM_TABLE, null, values, SQLiteDatabase.CONFLICT_IGNORE);
		if (nGramId == -1)
		{
			// the docs say insertWithOnConflict returns the existing row id when CONFLICT_IGNORE is specified an the values conflict with an existing
			// column, however, that doesn't seem to work reliably, so we when for an error condition and get the row id ourselves
			Cursor c = db
				.query(FTS_NGRAM_TABLE, new String[] { NGramColumns.NGRAM_ID }, NGramColumns.TEXT + "=?", new String[] { ngram }, null, null, null);
			try
			{
				if (c.moveToFirst())
				{
					nGramId = c.getLong(0);
				}
			}
			finally
			{
				c.close();
			}

		}
		nGramIds.add(nGramId);
	}
	return nGramIds;

}
 
public void saveQuery(String searchQuery) {
    ContentValues values = new ContentValues(2);
    values.put(KEY_SUGGESTION, searchQuery);
    values.put(KEY_DATE, System.currentTimeMillis());

    SQLiteDatabase database = getWritableDatabase();
    database.insertWithOnConflict(TABLE_NAME, null, values, SQLiteDatabase.CONFLICT_REPLACE);
}
 
private Uri insertChannelPersistent(Uri uri, ContentValues values) {
    SQLiteDatabase database;
    try {
        database = dbHelper.getWritableDatabase();
    } catch (SQLiteException e) {
        isDbWritable = false;
        SALog.printStackTrace(e);
        return uri;
    }
    if (!values.containsKey(DbParams.KEY_CHANNEL_EVENT_NAME) || !values.containsKey(DbParams.KEY_CHANNEL_RESULT)) {
        return uri;
    }
    long d = database.insertWithOnConflict(DbParams.TABLE_CHANNEL_PERSISTENT, null, values, SQLiteDatabase.CONFLICT_REPLACE);
    return ContentUris.withAppendedId(uri, d);
}
 
源代码16 项目: clevertap-android-sdk   文件: DBAdapter.java
/**
 * Adds a JSON string representing to the DB.
 *
 * @param obj the JSON to record
 * @return the number of rows in the table, or DB_OUT_OF_MEMORY_ERROR/DB_UPDATE_ERROR
 */
synchronized long storeUserProfile(String id, JSONObject obj) {

    if (id == null) return DB_UPDATE_ERROR;

    if (!this.belowMemThreshold()) {
        getConfigLogger().verbose("There is not enough space left on the device to store data, data discarded");
        return DB_OUT_OF_MEMORY_ERROR;
    }

    final String tableName = Table.USER_PROFILES.getName();

    long ret = DB_UPDATE_ERROR;

    try {
        final SQLiteDatabase db = dbHelper.getWritableDatabase();
        final ContentValues cv = new ContentValues();
        cv.put(KEY_DATA, obj.toString());
        cv.put("_id", id);
        ret = db.insertWithOnConflict(tableName, null, cv, SQLiteDatabase.CONFLICT_REPLACE);
    } catch (final SQLiteException e) {
        getConfigLogger().verbose("Error adding data to table " + tableName + " Recreating DB");
        dbHelper.deleteDatabase();
    } finally {
        dbHelper.close();
    }
    return ret;
}
 
源代码17 项目: XPrivacy   文件: PrivacyService.java
@Override
public void clear() throws RemoteException {
	try {
		enforcePermission(0);
		SQLiteDatabase db = getDb();
		SQLiteDatabase dbUsage = getDbUsage();
		if (db == null || dbUsage == null)
			return;

		mLock.writeLock().lock();
		try {
			db.beginTransaction();
			try {
				db.execSQL("DELETE FROM " + cTableRestriction);
				db.execSQL("DELETE FROM " + cTableSetting);
				Util.log(null, Log.WARN, "Database cleared");

				// Reset migrated
				ContentValues values = new ContentValues();
				values.put("uid", 0);
				values.put("type", "");
				values.put("name", PrivacyManager.cSettingMigrated);
				values.put("value", Boolean.toString(true));
				db.insertWithOnConflict(cTableSetting, null, values, SQLiteDatabase.CONFLICT_REPLACE);

				db.setTransactionSuccessful();
			} finally {
				db.endTransaction();
			}
		} finally {
			mLock.writeLock().unlock();
		}

		// Clear caches
		synchronized (mRestrictionCache) {
			mRestrictionCache.clear();
		}
		synchronized (mSettingCache) {
			mSettingCache.clear();
		}
		synchronized (mAskedOnceCache) {
			mAskedOnceCache.clear();
		}
		Util.log(null, Log.WARN, "Caches cleared");

		mLockUsage.writeLock().lock();
		try {
			dbUsage.beginTransaction();
			try {
				dbUsage.execSQL("DELETE FROM " + cTableUsage);
				Util.log(null, Log.WARN, "Usage database cleared");

				dbUsage.setTransactionSuccessful();
			} finally {
				dbUsage.endTransaction();
			}
		} finally {
			mLockUsage.writeLock().unlock();
		}

	} catch (Throwable ex) {
		Util.bug(null, ex);
		throw new RemoteException(ex.toString());
	}
}
 
@Override
public long insert(SQLiteDatabase db, Uri uri, ContentValues contentValues) {
    return db.insertWithOnConflict(tableName, "", contentValues, SQLiteDatabase.CONFLICT_REPLACE);
}
 
源代码19 项目: citra_android   文件: GameProvider.java
@Override
public Uri insert(@NonNull Uri uri, ContentValues values)
{
  Log.info("[GameProvider] Inserting row at URI: " + uri);

  SQLiteDatabase database = mDbHelper.getWritableDatabase();
  String table = uri.getLastPathSegment();

  long id = -1;

  if (table != null)
  {
    if (table.equals(REFRESH_LIBRARY))
    {
      Log.info(
              "[GameProvider] URI specified table REFRESH_LIBRARY. No insertion necessary; refreshing library contents...");
      mDbHelper.scanLibrary(database);
      return uri;
    }

    id = database.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_IGNORE);

    // If insertion was successful...
    if (id > 0)
    {
      // If we just added a folder, add its contents to the game list.
      if (table.equals(GameDatabase.TABLE_NAME_FOLDERS))
      {
        mDbHelper.scanLibrary(database);
      }

      // Notify the UI that its contents should be refreshed.
      getContext().getContentResolver().notifyChange(uri, null);
      uri = Uri.withAppendedPath(uri, Long.toString(id));
    }
    else
    {
      Log.error("[GameProvider] Row already exists: " + uri + " id: " + id);
    }
  }
  else
  {
    Log.error("[GameProvider] Badly formatted URI: " + uri);
  }

  database.close();

  return uri;
}
 
源代码20 项目: XPrivacy   文件: PrivacyService.java
private void setSettingInternal(PSetting setting) throws RemoteException {
	try {
		SQLiteDatabase db = getDb();
		if (db == null)
			return;

		mLock.writeLock().lock();
		try {
			db.beginTransaction();
			try {
				if (setting.value == null)
					db.delete(cTableSetting, "uid=? AND type=? AND name=?",
							new String[] { Integer.toString(setting.uid), setting.type, setting.name });
				else {
					// Create record
					ContentValues values = new ContentValues();
					values.put("uid", setting.uid);
					values.put("type", setting.type);
					values.put("name", setting.name);
					values.put("value", setting.value);

					// Insert/update record
					db.insertWithOnConflict(cTableSetting, null, values, SQLiteDatabase.CONFLICT_REPLACE);
				}

				db.setTransactionSuccessful();
			} finally {
				db.endTransaction();
			}
		} finally {
			mLock.writeLock().unlock();
		}

		if (PrivacyManager.cSettingAOSPMode.equals(setting.name))
			if (setting.value == null || Boolean.toString(false).equals(setting.value))
				new File("/data/system/xprivacy/aosp").delete();
			else
				new File("/data/system/xprivacy/aosp").createNewFile();

		// Update cache
		CSetting key = new CSetting(setting.uid, setting.type, setting.name);
		key.setValue(setting.value);
		synchronized (mSettingCache) {
			if (mSettingCache.containsKey(key))
				mSettingCache.remove(key);
			if (setting.value != null)
				mSettingCache.put(key, key);
		}

		// Clear restrictions for white list
		if (Meta.isWhitelist(setting.type))
			for (String restrictionName : PrivacyManager.getRestrictions())
				for (Hook hook : PrivacyManager.getHooks(restrictionName, null))
					if (setting.type.equals(hook.whitelist())) {
						PRestriction restriction = new PRestriction(setting.uid, hook.getRestrictionName(),
								hook.getName());
						Util.log(null, Log.WARN, "Clearing cache for " + restriction);
						synchronized (mRestrictionCache) {
							for (CRestriction mkey : new ArrayList<CRestriction>(mRestrictionCache.keySet()))
								if (mkey.isSameMethod(restriction)) {
									Util.log(null, Log.WARN, "Removing " + mkey);
									mRestrictionCache.remove(mkey);
								}
						}
					}
	} catch (Throwable ex) {
		Util.bug(null, ex);
		throw new RemoteException(ex.toString());
	}
}