Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何修改此SQLiteOpenHelper插入操作,使其成为ContentResolver操作(带有事务)_Android - Fatal编程技术网

Android 如何修改此SQLiteOpenHelper插入操作,使其成为ContentResolver操作(带有事务)

Android 如何修改此SQLiteOpenHelper插入操作,使其成为ContentResolver操作(带有事务),android,Android,我有一个SQLiteOpenHelper操作,我需要成为一个ContentResolver操作,这样即使应用程序被破坏,我也可以这样做 sqliteOpenHelper.database.beginTransaction(); try { ContentValues values = new ContentValues(); values.put("userId", userId); values.put(

我有一个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);
但是在上面的插入中有一些事务,所以我不知道如何处理。

使用


而不是:

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。这样你就可以记录了。这样交易就可以自动处理了吗?是的。不用担心