Domanda

E 'ok per chiamare il metodo di aggiornamento SQLiteDatabase nel insert() override metodo di un fornitore di contenuti?

È stato utile?

Soluzione

In sostanza è bene, ma dal momento che non è stato fornito il codice, ho appena posso postare 2 modi possibili per esso

Per prima cosa:

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

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

Secondo:

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

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

SQLiteDatabase per riferimento sul parametro via. Nella maggior parte dei casi l'ultimo metodo dovrebbe essere sufficiente, a meno che non si desidera solo alcuni campi in fase di aggiornamento, se esiste la riga e hanno tutti i campi se non lo fa.

La maggior parte necessità utile per insertWithOnConflict può essere, che si potrebbe inserire una riga e se esiste già, ignorare l'inserto e invece riportare la chiave Uri / primaria della riga già esistente.

Altri suggerimenti

E 'la vostra scelta ciò che si scrive nei vostri metodi sostituiti. Quindi sì, è ok.

Non so quello che stai cercando di fare, ma si potrebbe desiderare di dare un'occhiata al metodo SQLiteDatabase del replace() troppo. Forse è meglio si adatta alle tue esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top