Android 如何修改此SQLiteOpenHelper插入操作,使其成为ContentResolver操作(带有事务)
我有一个SQLiteOpenHelper操作,我需要成为一个ContentResolver操作,这样即使应用程序被破坏,我也可以这样做Android 如何修改此SQLiteOpenHelper插入操作,使其成为ContentResolver操作(带有事务),android,Android,我有一个SQLiteOpenHelper操作,我需要成为一个ContentResolver操作,这样即使应用程序被破坏,我也可以这样做 sqliteOpenHelper.database.beginTransaction(); try { ContentValues values = new ContentValues(); values.put("userId", userId); values.put(
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);
但是在上面的插入中有一些事务,所以我不知道如何处理。使用
而不是:
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();
}
交易情况如何?稍后在同一个类中,我必须做一个新的insertAlso,我该如何处理这个uri?这是新插入行的uri。这样你就可以记录了。这样交易就可以自动处理了吗?是的。不用担心