Java源码示例:com.google.android.exoplayer2.database.DatabaseIOException

示例1
@Override
public void putDownload(Download download) throws DatabaseIOException {
  ensureInitialized();
  ContentValues values = new ContentValues();
  values.put(COLUMN_ID, download.request.id);
  values.put(COLUMN_TYPE, download.request.type);
  values.put(COLUMN_URI, download.request.uri.toString());
  values.put(COLUMN_STREAM_KEYS, encodeStreamKeys(download.request.streamKeys));
  values.put(COLUMN_CUSTOM_CACHE_KEY, download.request.customCacheKey);
  values.put(COLUMN_DATA, download.request.data);
  values.put(COLUMN_STATE, download.state);
  values.put(COLUMN_START_TIME_MS, download.startTimeMs);
  values.put(COLUMN_UPDATE_TIME_MS, download.updateTimeMs);
  values.put(COLUMN_CONTENT_LENGTH, download.contentLength);
  values.put(COLUMN_STOP_REASON, download.stopReason);
  values.put(COLUMN_FAILURE_REASON, download.failureReason);
  values.put(COLUMN_PERCENT_DOWNLOADED, download.getPercentDownloaded());
  values.put(COLUMN_BYTES_DOWNLOADED, download.getBytesDownloaded());
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.replaceOrThrow(tableName, /* nullColumnHack= */ null, values);
  } catch (SQLiteException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例2
@Override
public void setStopReason(String id, int stopReason) throws DatabaseIOException {
  ensureInitialized();
  try {
    ContentValues values = new ContentValues();
    values.put(COLUMN_STOP_REASON, stopReason);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.update(
        tableName,
        values,
        WHERE_STATE_IS_TERMINAL + " AND " + WHERE_ID_EQUALS,
        new String[] {id});
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例3
private void ensureInitialized() throws DatabaseIOException {
  if (initialized) {
    return;
  }
  try {
    SQLiteDatabase readableDatabase = databaseProvider.getReadableDatabase();
    int version = VersionTable.getVersion(readableDatabase, VersionTable.FEATURE_OFFLINE, name);
    if (version != TABLE_VERSION) {
      SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
      writableDatabase.beginTransactionNonExclusive();
      try {
        VersionTable.setVersion(
            writableDatabase, VersionTable.FEATURE_OFFLINE, name, TABLE_VERSION);
        writableDatabase.execSQL("DROP TABLE IF EXISTS " + tableName);
        writableDatabase.execSQL("CREATE TABLE " + tableName + " " + TABLE_SCHEMA);
        writableDatabase.setTransactionSuccessful();
      } finally {
        writableDatabase.endTransaction();
      }
    }
    initialized = true;
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例4
@SuppressWarnings("nullness:argument.type.incompatible")
private Cursor getCursor(String selection, @Nullable String[] selectionArgs)
    throws DatabaseIOException {
  try {
    String sortOrder = COLUMN_START_TIME_MS + " ASC";
    return databaseProvider
        .getReadableDatabase()
        .query(
            tableName,
            COLUMNS,
            selection,
            selectionArgs,
            /* groupBy= */ null,
            /* having= */ null,
            sortOrder);
  } catch (SQLiteException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例5
@Override
public void storeFully(HashMap<String, CachedContent> content) throws IOException {
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransactionNonExclusive();
    try {
      initializeTable(writableDatabase);
      for (CachedContent cachedContent : content.values()) {
        addOrUpdateRow(writableDatabase, cachedContent);
      }
      writableDatabase.setTransactionSuccessful();
      pendingUpdates.clear();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例6
@Override
public void storeIncremental(HashMap<String, CachedContent> content) throws IOException {
  if (pendingUpdates.size() == 0) {
    return;
  }
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransactionNonExclusive();
    try {
      for (int i = 0; i < pendingUpdates.size(); i++) {
        CachedContent cachedContent = pendingUpdates.valueAt(i);
        if (cachedContent == null) {
          deleteRow(writableDatabase, pendingUpdates.keyAt(i));
        } else {
          addOrUpdateRow(writableDatabase, cachedContent);
        }
      }
      writableDatabase.setTransactionSuccessful();
      pendingUpdates.clear();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例7
private static void delete(DatabaseProvider databaseProvider, String hexUid)
    throws DatabaseIOException {
  try {
    String tableName = getTableName(hexUid);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransactionNonExclusive();
    try {
      VersionTable.removeVersion(
          writableDatabase, VersionTable.FEATURE_CACHE_CONTENT_METADATA, hexUid);
      dropTable(writableDatabase, tableName);
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例8
/**
 * Deletes index data for the specified cache.
 *
 * <p>This method may be slow and shouldn't normally be called on the main thread.
 *
 * @param databaseProvider Provides the database in which the index is stored.
 * @param uid The cache UID.
 * @throws DatabaseIOException If an error occurs deleting the index data.
 */
@WorkerThread
public static void delete(DatabaseProvider databaseProvider, long uid)
    throws DatabaseIOException {
  String hexUid = Long.toHexString(uid);
  try {
    String tableName = getTableName(hexUid);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransactionNonExclusive();
    try {
      VersionTable.removeVersion(
          writableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid);
      dropTable(writableDatabase, tableName);
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例9
/**
 * Returns all file metadata keyed by file name. The returned map is mutable and may be modified
 * by the caller.
 *
 * <p>This method may be slow and shouldn't normally be called on the main thread.
 *
 * @return The file metadata keyed by file name.
 * @throws DatabaseIOException If an error occurs loading the metadata.
 */
@WorkerThread
public Map<String, CacheFileMetadata> getAll() throws DatabaseIOException {
  try (Cursor cursor = getCursor()) {
    Map<String, CacheFileMetadata> fileMetadata = new HashMap<>(cursor.getCount());
    while (cursor.moveToNext()) {
      String name = cursor.getString(COLUMN_INDEX_NAME);
      long length = cursor.getLong(COLUMN_INDEX_LENGTH);
      long lastTouchTimestamp = cursor.getLong(COLUMN_INDEX_LAST_TOUCH_TIMESTAMP);
      fileMetadata.put(name, new CacheFileMetadata(length, lastTouchTimestamp));
    }
    return fileMetadata;
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例10
/**
 * Removes metadata.
 *
 * <p>This method may be slow and shouldn't normally be called on the main thread.
 *
 * @param names The names of the files whose metadata is to be removed.
 * @throws DatabaseIOException If an error occurs removing the metadata.
 */
@WorkerThread
public void removeAll(Set<String> names) throws DatabaseIOException {
  Assertions.checkNotNull(tableName);
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransactionNonExclusive();
    try {
      for (String name : names) {
        writableDatabase.delete(tableName, WHERE_NAME_EQUALS, new String[] {name});
      }
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例11
@Override
public void putDownload(Download download) throws DatabaseIOException {
  ensureInitialized();
  ContentValues values = new ContentValues();
  values.put(COLUMN_ID, download.request.id);
  values.put(COLUMN_TYPE, download.request.type);
  values.put(COLUMN_URI, download.request.uri.toString());
  values.put(COLUMN_STREAM_KEYS, encodeStreamKeys(download.request.streamKeys));
  values.put(COLUMN_CUSTOM_CACHE_KEY, download.request.customCacheKey);
  values.put(COLUMN_DATA, download.request.data);
  values.put(COLUMN_STATE, download.state);
  values.put(COLUMN_START_TIME_MS, download.startTimeMs);
  values.put(COLUMN_UPDATE_TIME_MS, download.updateTimeMs);
  values.put(COLUMN_CONTENT_LENGTH, download.contentLength);
  values.put(COLUMN_STOP_REASON, download.stopReason);
  values.put(COLUMN_FAILURE_REASON, download.failureReason);
  values.put(COLUMN_PERCENT_DOWNLOADED, download.getPercentDownloaded());
  values.put(COLUMN_BYTES_DOWNLOADED, download.getBytesDownloaded());
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.replaceOrThrow(tableName, /* nullColumnHack= */ null, values);
  } catch (SQLiteException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例12
@Override
public void setStopReason(String id, int stopReason) throws DatabaseIOException {
  ensureInitialized();
  try {
    ContentValues values = new ContentValues();
    values.put(COLUMN_STOP_REASON, stopReason);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.update(
        tableName,
        values,
        WHERE_STATE_IS_TERMINAL + " AND " + WHERE_ID_EQUALS,
        new String[] {id});
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例13
private void ensureInitialized() throws DatabaseIOException {
  if (initialized) {
    return;
  }
  try {
    SQLiteDatabase readableDatabase = databaseProvider.getReadableDatabase();
    int version = VersionTable.getVersion(readableDatabase, VersionTable.FEATURE_OFFLINE, name);
    if (version != TABLE_VERSION) {
      SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
      writableDatabase.beginTransaction();
      try {
        VersionTable.setVersion(
            writableDatabase, VersionTable.FEATURE_OFFLINE, name, TABLE_VERSION);
        writableDatabase.execSQL("DROP TABLE IF EXISTS " + tableName);
        writableDatabase.execSQL("CREATE TABLE " + tableName + " " + TABLE_SCHEMA);
        writableDatabase.setTransactionSuccessful();
      } finally {
        writableDatabase.endTransaction();
      }
    }
    initialized = true;
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例14
private Cursor getCursor(String selection, @Nullable String[] selectionArgs)
    throws DatabaseIOException {
  try {
    String sortOrder = COLUMN_START_TIME_MS + " ASC";
    return databaseProvider
        .getReadableDatabase()
        .query(
            tableName,
            COLUMNS,
            selection,
            selectionArgs,
            /* groupBy= */ null,
            /* having= */ null,
            sortOrder);
  } catch (SQLiteException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例15
@Override
public void storeFully(HashMap<String, CachedContent> content) throws IOException {
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      initializeTable(writableDatabase);
      for (CachedContent cachedContent : content.values()) {
        addOrUpdateRow(writableDatabase, cachedContent);
      }
      writableDatabase.setTransactionSuccessful();
      pendingUpdates.clear();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例16
@Override
public void storeIncremental(HashMap<String, CachedContent> content) throws IOException {
  if (pendingUpdates.size() == 0) {
    return;
  }
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      for (int i = 0; i < pendingUpdates.size(); i++) {
        CachedContent cachedContent = pendingUpdates.valueAt(i);
        if (cachedContent == null) {
          deleteRow(writableDatabase, pendingUpdates.keyAt(i));
        } else {
          addOrUpdateRow(writableDatabase, cachedContent);
        }
      }
      writableDatabase.setTransactionSuccessful();
      pendingUpdates.clear();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例17
private static void delete(DatabaseProvider databaseProvider, String hexUid)
    throws DatabaseIOException {
  try {
    String tableName = getTableName(hexUid);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      VersionTable.removeVersion(
          writableDatabase, VersionTable.FEATURE_CACHE_CONTENT_METADATA, hexUid);
      dropTable(writableDatabase, tableName);
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例18
/**
 * Deletes index data for the specified cache.
 *
 * @param databaseProvider Provides the database in which the index is stored.
 * @param uid The cache UID.
 * @throws DatabaseIOException If an error occurs deleting the index data.
 */
public static void delete(DatabaseProvider databaseProvider, long uid)
    throws DatabaseIOException {
  String hexUid = Long.toHexString(uid);
  try {
    String tableName = getTableName(hexUid);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      VersionTable.removeVersion(
          writableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid);
      dropTable(writableDatabase, tableName);
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例19
/**
 * Initializes the index for the given cache UID.
 *
 * @param uid The cache UID.
 * @throws DatabaseIOException If an error occurs initializing the index.
 */
public void initialize(long uid) throws DatabaseIOException {
  try {
    String hexUid = Long.toHexString(uid);
    tableName = getTableName(hexUid);
    SQLiteDatabase readableDatabase = databaseProvider.getReadableDatabase();
    int version =
        VersionTable.getVersion(
            readableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid);
    if (version != TABLE_VERSION) {
      SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
      writableDatabase.beginTransaction();
      try {
        VersionTable.setVersion(
            writableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid, TABLE_VERSION);
        dropTable(writableDatabase, tableName);
        writableDatabase.execSQL("CREATE TABLE " + tableName + " " + TABLE_SCHEMA);
        writableDatabase.setTransactionSuccessful();
      } finally {
        writableDatabase.endTransaction();
      }
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例20
/**
 * Removes metadata.
 *
 * @param names The names of the files whose metadata is to be removed.
 * @throws DatabaseIOException If an error occurs removing the metadata.
 */
public void removeAll(Set<String> names) throws DatabaseIOException {
  Assertions.checkNotNull(tableName);
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      for (String name : names) {
        writableDatabase.delete(tableName, WHERE_NAME_EQUALS, new String[] {name});
      }
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例21
@Override
public void putDownload(Download download) throws DatabaseIOException {
  ensureInitialized();
  ContentValues values = new ContentValues();
  values.put(COLUMN_ID, download.request.id);
  values.put(COLUMN_TYPE, download.request.type);
  values.put(COLUMN_URI, download.request.uri.toString());
  values.put(COLUMN_STREAM_KEYS, encodeStreamKeys(download.request.streamKeys));
  values.put(COLUMN_CUSTOM_CACHE_KEY, download.request.customCacheKey);
  values.put(COLUMN_DATA, download.request.data);
  values.put(COLUMN_STATE, download.state);
  values.put(COLUMN_START_TIME_MS, download.startTimeMs);
  values.put(COLUMN_UPDATE_TIME_MS, download.updateTimeMs);
  values.put(COLUMN_CONTENT_LENGTH, download.contentLength);
  values.put(COLUMN_STOP_REASON, download.stopReason);
  values.put(COLUMN_FAILURE_REASON, download.failureReason);
  values.put(COLUMN_PERCENT_DOWNLOADED, download.getPercentDownloaded());
  values.put(COLUMN_BYTES_DOWNLOADED, download.getBytesDownloaded());
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.replaceOrThrow(tableName, /* nullColumnHack= */ null, values);
  } catch (SQLiteException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例22
@Override
public void setStopReason(String id, int stopReason) throws DatabaseIOException {
  ensureInitialized();
  try {
    ContentValues values = new ContentValues();
    values.put(COLUMN_STOP_REASON, stopReason);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.update(
        tableName,
        values,
        WHERE_STATE_IS_TERMINAL + " AND " + WHERE_ID_EQUALS,
        new String[] {id});
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例23
private void ensureInitialized() throws DatabaseIOException {
  if (initialized) {
    return;
  }
  try {
    SQLiteDatabase readableDatabase = databaseProvider.getReadableDatabase();
    int version = VersionTable.getVersion(readableDatabase, VersionTable.FEATURE_OFFLINE, name);
    if (version != TABLE_VERSION) {
      SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
      writableDatabase.beginTransaction();
      try {
        VersionTable.setVersion(
            writableDatabase, VersionTable.FEATURE_OFFLINE, name, TABLE_VERSION);
        writableDatabase.execSQL("DROP TABLE IF EXISTS " + tableName);
        writableDatabase.execSQL("CREATE TABLE " + tableName + " " + TABLE_SCHEMA);
        writableDatabase.setTransactionSuccessful();
      } finally {
        writableDatabase.endTransaction();
      }
    }
    initialized = true;
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例24
private Cursor getCursor(String selection, @Nullable String[] selectionArgs)
    throws DatabaseIOException {
  try {
    String sortOrder = COLUMN_START_TIME_MS + " ASC";
    return databaseProvider
        .getReadableDatabase()
        .query(
            tableName,
            COLUMNS,
            selection,
            selectionArgs,
            /* groupBy= */ null,
            /* having= */ null,
            sortOrder);
  } catch (SQLiteException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例25
@Override
public void storeFully(HashMap<String, CachedContent> content) throws IOException {
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      initializeTable(writableDatabase);
      for (CachedContent cachedContent : content.values()) {
        addOrUpdateRow(writableDatabase, cachedContent);
      }
      writableDatabase.setTransactionSuccessful();
      pendingUpdates.clear();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例26
@Override
public void storeIncremental(HashMap<String, CachedContent> content) throws IOException {
  if (pendingUpdates.size() == 0) {
    return;
  }
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      for (int i = 0; i < pendingUpdates.size(); i++) {
        CachedContent cachedContent = pendingUpdates.valueAt(i);
        if (cachedContent == null) {
          deleteRow(writableDatabase, pendingUpdates.keyAt(i));
        } else {
          addOrUpdateRow(writableDatabase, cachedContent);
        }
      }
      writableDatabase.setTransactionSuccessful();
      pendingUpdates.clear();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例27
private static void delete(DatabaseProvider databaseProvider, String hexUid)
    throws DatabaseIOException {
  try {
    String tableName = getTableName(hexUid);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      VersionTable.removeVersion(
          writableDatabase, VersionTable.FEATURE_CACHE_CONTENT_METADATA, hexUid);
      dropTable(writableDatabase, tableName);
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例28
/**
 * Deletes index data for the specified cache.
 *
 * @param databaseProvider Provides the database in which the index is stored.
 * @param uid The cache UID.
 * @throws DatabaseIOException If an error occurs deleting the index data.
 */
public static void delete(DatabaseProvider databaseProvider, long uid)
    throws DatabaseIOException {
  String hexUid = Long.toHexString(uid);
  try {
    String tableName = getTableName(hexUid);
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      VersionTable.removeVersion(
          writableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid);
      dropTable(writableDatabase, tableName);
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例29
/**
 * Initializes the index for the given cache UID.
 *
 * @param uid The cache UID.
 * @throws DatabaseIOException If an error occurs initializing the index.
 */
public void initialize(long uid) throws DatabaseIOException {
  try {
    String hexUid = Long.toHexString(uid);
    tableName = getTableName(hexUid);
    SQLiteDatabase readableDatabase = databaseProvider.getReadableDatabase();
    int version =
        VersionTable.getVersion(
            readableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid);
    if (version != TABLE_VERSION) {
      SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
      writableDatabase.beginTransaction();
      try {
        VersionTable.setVersion(
            writableDatabase, VersionTable.FEATURE_CACHE_FILE_METADATA, hexUid, TABLE_VERSION);
        dropTable(writableDatabase, tableName);
        writableDatabase.execSQL("CREATE TABLE " + tableName + " " + TABLE_SCHEMA);
        writableDatabase.setTransactionSuccessful();
      } finally {
        writableDatabase.endTransaction();
      }
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}
 
示例30
/**
 * Removes metadata.
 *
 * @param names The names of the files whose metadata is to be removed.
 * @throws DatabaseIOException If an error occurs removing the metadata.
 */
public void removeAll(Set<String> names) throws DatabaseIOException {
  Assertions.checkNotNull(tableName);
  try {
    SQLiteDatabase writableDatabase = databaseProvider.getWritableDatabase();
    writableDatabase.beginTransaction();
    try {
      for (String name : names) {
        writableDatabase.delete(tableName, WHERE_NAME_EQUALS, new String[] {name});
      }
      writableDatabase.setTransactionSuccessful();
    } finally {
      writableDatabase.endTransaction();
    }
  } catch (SQLException e) {
    throw new DatabaseIOException(e);
  }
}