В принципе это нормально, но так как вы не предоставили код, я просто могу опубликовать 2 возможных способа для него
Первый:
// 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 для ссылки на четвертый параметр.В большинстве случаев последний метод должен быть достаточным, если только вы не хотите обновлять только определенные поля, если строка существует, и иметь все поля, если ее нет.
Наиболее полезной потребностью в insertWithOnConflict может быть то, что вы можете вставитьстрока и, если она уже существует, проигнорируйте вставку и вместо этого верните Uri / первичный ключ уже существующей строки.