Android SQLite:如何处理唯一值



我正在尝试写入数据库,在我的规范中,我必须确保特定字段没有重复项。太棒了我可以让这个专栏独一无二。

但我不知道以后该怎么处理。如果我使用该应用程序,不小心插入了一个碰巧已经存在的新值,该应用程序就会崩溃。在尝试更新数据库之前,如何检查该值是否已存在?

我觉得if命令会起作用,Buuuuut,无论如何,你如何在android上扫描该列的每个值?

我假设您建议我们可以读取表中的所有行,并检查每一行的值是否已经存在。如果不存在,插入,否则处理冲突。

另一种方法是使用insertWithOnConflict()方法。您可以设置各种冲突解决策略,例如:

  • CONFLICT_ABORT
  • CONFLICT_FAIL
  • 冲突忽略
  • CONFLICT_NONE
  • 冲突_重置
  • CONFLICT_ROLLBACK

我不知道这个方法的复杂性,但它可能比手动读取所有行并手动检查要好得多。

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insertWithOnConflict(java.lang.String,%20java.lang.Sstring,%20android.content.ContentValues,%20int)

最新更新