我有这个SQLiteOpenHelper操作,我需要成为一个ContentResolver操作,所以即使应用程序被销毁我也可以这样做
sqliteOpenHelper.database.beginTransaction();
try {
ContentValues values = new ContentValues();
values.put("userId", userId);
values.put("userName", userName);
values.put("userEmail", userEmail);
sqliteOpenHelper.database.insert("users", null, values);
sqliteOpenHelper.database.setTransactionSuccessful();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
sqliteOpenHelper.database.endTransaction();
}
通常我知道如何使用ContentResolver查询数据库,如下所示:
Uri contentUri = Uri.withAppendedPath(ContentProviderDB.CONTENT_URI, "users");
String selection = "user_id = " + String.valueOf(userId);
cursor = context.getContentResolver().query(contentUri, null, selection, null, null);
但是在上面的INSERT中有交易,所以我不知道如何处理。
答案 0 :(得分:1)
使用contentResolver.insert (uri, contentValues)。
而不是:
sqliteOpenHelper.database.beginTransaction();
try {
ContentValues values = new ContentValues();
values.put("userId", userId);
values.put("userName", userName);
values.put("userEmail", userEmail);
sqliteOpenHelper.database.insert("users", null, values);
sqliteOpenHelper.database.setTransactionSuccessful();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
sqliteOpenHelper.database.endTransaction();
}
你需要写:
try {
ContentValues values = new ContentValues();
values.put("userId", userId);
values.put("userName", userName);
values.put("userEmail", userEmail);
Uri uri = mContext.getContentResolver().insert(contentUri, values);
} catch (Exception ex) {
ex.printStackTrace();
}