Android的SQLiteDatabase中的冲突解决方案

时间:2011-07-07 20:20:52

标签: android sqlite

如果我插入重复的行,Android的SQLite库如何解决冲突?我正在为API级别7构建我的应用程序,遗憾的是,该应用程序没有从API级别8开始包含的SQLiteDatabase.insertOnConflict()方法。

3 个答案:

答案 0 :(得分:30)

您可以在表定义中指定UNIQUE索引,该索引允许行为REPLACE D:

CREATE TABLE mytable (
  id  INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  UNIQUE (id) ON CONFLICT REPLACE
)

如果INSERT或UPDATE语句的行尝试添加具有已存在的id的行,则现有行将替换为新行。

答案 1 :(得分:6)

SQLite中有一个ON CONFLICT子句,您可以说INSERT INTO ... ON CONFLICT...

请阅读文档。 http://www.sqlite.org/lang_conflict.html

答案 2 :(得分:0)

默认情况下,我会在重复索引插入时抛出唯一索引异常。常见的解决方案是在执行insert之前检查记录存在 - 伪代码:

select * from people where name = 'Smith';
//if resultset is empty then perform insert
insert into people values 'Smith'