Merge "Carry over bugfixes from MediaProvider." into rvc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f6f2273cb0
@@ -191,6 +191,58 @@ public class DatabaseUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
public static long executeInsert(@NonNull SQLiteDatabase db, @NonNull String sql,
|
||||
@Nullable Object[] bindArgs) throws SQLException {
|
||||
try (SQLiteStatement st = db.compileStatement(sql)) {
|
||||
bindArgs(st, bindArgs);
|
||||
return st.executeInsert();
|
||||
}
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
public static int executeUpdateDelete(@NonNull SQLiteDatabase db, @NonNull String sql,
|
||||
@Nullable Object[] bindArgs) throws SQLException {
|
||||
try (SQLiteStatement st = db.compileStatement(sql)) {
|
||||
bindArgs(st, bindArgs);
|
||||
return st.executeUpdateDelete();
|
||||
}
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
private static void bindArgs(@NonNull SQLiteStatement st, @Nullable Object[] bindArgs) {
|
||||
if (bindArgs == null) return;
|
||||
|
||||
for (int i = 0; i < bindArgs.length; i++) {
|
||||
final Object bindArg = bindArgs[i];
|
||||
switch (getTypeOfObject(bindArg)) {
|
||||
case Cursor.FIELD_TYPE_NULL:
|
||||
st.bindNull(i + 1);
|
||||
break;
|
||||
case Cursor.FIELD_TYPE_INTEGER:
|
||||
st.bindLong(i + 1, ((Number) bindArg).longValue());
|
||||
break;
|
||||
case Cursor.FIELD_TYPE_FLOAT:
|
||||
st.bindDouble(i + 1, ((Number) bindArg).doubleValue());
|
||||
break;
|
||||
case Cursor.FIELD_TYPE_BLOB:
|
||||
st.bindBlob(i + 1, (byte[]) bindArg);
|
||||
break;
|
||||
case Cursor.FIELD_TYPE_STRING:
|
||||
default:
|
||||
if (bindArg instanceof Boolean) {
|
||||
// Provide compatibility with legacy
|
||||
// applications which may pass Boolean values in
|
||||
// bind args.
|
||||
st.bindLong(i + 1, ((Boolean) bindArg).booleanValue() ? 1 : 0);
|
||||
} else {
|
||||
st.bindString(i + 1, bindArg.toString());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Binds the given Object to the given SQLiteProgram using the proper
|
||||
* typing. For example, bind numbers as longs/doubles, and everything else
|
||||
|
||||
@@ -626,7 +626,7 @@ public class SQLiteQueryBuilder {
|
||||
Log.d(TAG, sql);
|
||||
}
|
||||
}
|
||||
return db.executeSql(sql, sqlArgs);
|
||||
return DatabaseUtils.executeInsert(db, sql, sqlArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -702,7 +702,7 @@ public class SQLiteQueryBuilder {
|
||||
Log.d(TAG, sql);
|
||||
}
|
||||
}
|
||||
return db.executeSql(sql, sqlArgs);
|
||||
return DatabaseUtils.executeUpdateDelete(db, sql, sqlArgs);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -762,7 +762,7 @@ public class SQLiteQueryBuilder {
|
||||
Log.d(TAG, sql);
|
||||
}
|
||||
}
|
||||
return db.executeSql(sql, sqlArgs);
|
||||
return DatabaseUtils.executeUpdateDelete(db, sql, sqlArgs);
|
||||
}
|
||||
|
||||
private void enforceStrictColumns(@Nullable String[] projection) {
|
||||
|
||||
Reference in New Issue
Block a user