سؤال

هل من المقبول الاتصال SQLiteDatabase طريقة التحديث في insert() طريقة Overridden لمزود المحتوى؟

هل كانت مفيدة؟

المحلول

لا بأس في الأساس ، لكن بما أنك لم تقدم رمزًا ، يمكنني فقط نشر طريقتين محتملين لذلك

أولاً:

// In your content provider
public Uri insert(...) {
    long insertId = db.insert(...);

    if(insertId == -1) {
        // insert failed, do update
        db.update(...);
    }
}

ثانيا:

public Uri insert(...) {
    long insertId = db.insertWithOnConflict(table, null, values, SQLiteDatabase.CONFLICT_REPLACE)

    if(insertId == -1) {
        // insert and update/replace failed
    }
}

الدفع sqlitedatabase للرجوع إليها على المعلمة Forth. في معظم الحالات ، يجب أن تكون الطريقة الأخيرة كافية ، إلا إذا كنت تريد فقط تحديث حقول معينة إذا كان الصف موجود ولديها جميع الحقول إذا لم يكن كذلك.

قد تكون الحاجة الأكثر فائدة لإدراجها ، حيث يمكنك إدراج صف ، وإذا كان موجودًا بالفعل ، فتجاهل الإدراج وبدلاً من ذلك إرجاع المفتاح الأساسي/الأساسي للصف الموجود بالفعل.

نصائح أخرى

إنه اختيارك لما تكتبه في أساليبك المتجاوز. لذا نعم ، لا بأس.

لا أعرف ما الذي تحاول القيام به ، لكنك قد ترغب في إلقاء نظرة على SQLiteDatabasereplace() الطريقة أيضا. ربما يناسب احتياجاتك بشكل أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top