android.database.sqlite.SQLiteDiskIOException Java Examples

The following examples show how to use android.database.sqlite.SQLiteDiskIOException. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DatabaseUtils.java    From android_9.0.0_r45 with Apache License 2.0 6 votes vote down vote up
private static final void readExceptionFromParcel(Parcel reply, String msg, int code) {
    switch (code) {
        case 2:
            throw new IllegalArgumentException(msg);
        case 3:
            throw new UnsupportedOperationException(msg);
        case 4:
            throw new SQLiteAbortException(msg);
        case 5:
            throw new SQLiteConstraintException(msg);
        case 6:
            throw new SQLiteDatabaseCorruptException(msg);
        case 7:
            throw new SQLiteFullException(msg);
        case 8:
            throw new SQLiteDiskIOException(msg);
        case 9:
            throw new SQLiteException(msg);
        case 11:
            throw new OperationCanceledException(msg);
        default:
            reply.readException(code, msg);
    }
}
 
Example #2
Source File: WidgetPreviewLoader.java    From TurboLauncher with Apache License 2.0 6 votes vote down vote up
private void writeToDb(Object o, Bitmap preview) {
    String name = getObjectName(o);
    SQLiteDatabase db = mDb.getWritableDatabase();
    ContentValues values = new ContentValues();

    values.put(CacheDb.COLUMN_NAME, name);
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    preview.compress(Bitmap.CompressFormat.PNG, 100, stream);
    values.put(CacheDb.COLUMN_PREVIEW_BITMAP, stream.toByteArray());
    values.put(CacheDb.COLUMN_SIZE, mSize);
    try {
        db.insert(CacheDb.TABLE_NAME, null, values);
    } catch (SQLiteDiskIOException e) {
        recreateDb();
    }
}
 
Example #3
Source File: WidgetPreviewLoader.java    From TurboLauncher with Apache License 2.0 6 votes vote down vote up
public static void removePackageFromDb(final CacheDb cacheDb, final String packageName) {
    synchronized(sInvalidPackages) {
        sInvalidPackages.add(packageName);
    }
    new AsyncTask<Void, Void, Void>() {
        public Void doInBackground(Void ... args) {
            SQLiteDatabase db = cacheDb.getWritableDatabase();
            try {
                db.delete(CacheDb.TABLE_NAME,
                        CacheDb.COLUMN_NAME + " LIKE ? OR " +
                        CacheDb.COLUMN_NAME + " LIKE ?", // SELECT query
                        new String[] {
                                WIDGET_PREFIX + packageName + "/%",
                                SHORTCUT_PREFIX + packageName + "/%"
                        } // args to SELECT query
                );
            } catch (SQLiteDiskIOException e) {
            }
            synchronized(sInvalidPackages) {
                sInvalidPackages.remove(packageName);
            }
            return null;
        }
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
}
 
Example #4
Source File: DatabaseUtils.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
/**
 * Special function for writing an exception result at the header of
 * a parcel, to be used when returning an exception from a transaction.
 * exception will be re-thrown by the function in another process
 * @param reply Parcel to write to
 * @param e The Exception to be written.
 * @see Parcel#writeNoException
 * @see Parcel#writeException
 */
public static final void writeExceptionToParcel(Parcel reply, Exception e) {
    int code = 0;
    boolean logException = true;
    if (e instanceof FileNotFoundException) {
        code = 1;
        logException = false;
    } else if (e instanceof IllegalArgumentException) {
        code = 2;
    } else if (e instanceof UnsupportedOperationException) {
        code = 3;
    } else if (e instanceof SQLiteAbortException) {
        code = 4;
    } else if (e instanceof SQLiteConstraintException) {
        code = 5;
    } else if (e instanceof SQLiteDatabaseCorruptException) {
        code = 6;
    } else if (e instanceof SQLiteFullException) {
        code = 7;
    } else if (e instanceof SQLiteDiskIOException) {
        code = 8;
    } else if (e instanceof SQLiteException) {
        code = 9;
    } else if (e instanceof OperationApplicationException) {
        code = 10;
    } else if (e instanceof OperationCanceledException) {
        code = 11;
        logException = false;
    } else {
        reply.writeException(e);
        Log.e(TAG, "Writing exception to parcel", e);
        return;
    }
    reply.writeInt(code);
    reply.writeString(e.getMessage());

    if (logException) {
        Log.e(TAG, "Writing exception to parcel", e);
    }
}
 
Example #5
Source File: DatabaseErrorHandlerTest.java    From sqlite-android with Apache License 2.0 5 votes vote down vote up
@Test
public void testDatabaseIsCorrupt() throws IOException {
    mDatabase.execSQL("create table t (i int);");
    // write junk into the database file
    BufferedWriter writer = new BufferedWriter(new FileWriter(mDatabaseFile.getPath()));
    writer.write("blah");
    writer.close();
    assertTrue(mDatabaseFile.exists());
    // since the database file is now corrupt, doing any sql on this database connection
    // should trigger call to MyDatabaseCorruptionHandler.onCorruption
    try {
        mDatabase.execSQL("select * from t;");
        fail("expected exception");
    } catch (SQLiteDiskIOException e) {
        //
        // this test used to produce a corrupted db. but with new sqlite it instead reports
        // Disk I/O error. meh..
        // need to figure out how to cause corruption in db
        //
        // expected
        if (mDatabaseFile.exists()) {
            mDatabaseFile.delete();
        }
    } catch (SQLiteException ignored) {
        
    }
    // database file should be gone
    assertFalse(mDatabaseFile.exists());
    // after corruption handler is called, the database file should be free of
    // database corruption
    SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(mDatabaseFile.getPath(), null,
            new MyDatabaseCorruptionHandler());
    assertTrue(db.isDatabaseIntegrityOk());
}
 
Example #6
Source File: WidgetPreviewLoader.java    From TurboLauncher with Apache License 2.0 5 votes vote down vote up
private void clearDb() {
    SQLiteDatabase db = mDb.getWritableDatabase();
    // Delete everything
    try {
        db.delete(CacheDb.TABLE_NAME, null, null);
    } catch (SQLiteDiskIOException e) {
    }
}
 
Example #7
Source File: WidgetPreviewLoader.java    From TurboLauncher with Apache License 2.0 5 votes vote down vote up
public static void removeItemFromDb(final CacheDb cacheDb, final String objectName) {
    new AsyncTask<Void, Void, Void>() {
        public Void doInBackground(Void ... args) {
            SQLiteDatabase db = cacheDb.getWritableDatabase();
            try {
                db.delete(CacheDb.TABLE_NAME,
                        CacheDb.COLUMN_NAME + " = ? ", // SELECT query
                        new String[] { objectName }); // args to SELECT query
            } catch (SQLiteDiskIOException e) {
            }
            return null;
        }
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null);
}