防止sqllite数据库android中的重复条目


prevent to duplicate entry in sqllite database android

我创建了两个表:

  1. 项目.db
  2. TempItem.db

当我在Item.db表中添加第三个条目并将该条目复制到TempItem.db时,这两个表都有两个条目,这一次是在我的TempItem表中添加的重复条目。

如何防止这种情况发生?

我的源代码

// Item.db table array
for(int ip=0; ip<results.size(); ip++)
{
// TempItem.db table array
    for(int ig=0; ig<resultmain.size(); ig++)
    {
        // Check Both database item
        if((results.get(ip).item).equals(resultmain.get(ig).item))
        {
            Toast.makeText(getApplicationContext(), "no", 100).show();
        }
        else
        {
            mb.insertEntry(1, 1, 1, 1, "Baby", "1", "100", "100");
        }                        
    }
}

但每次都会添加重复的值。

您可以使用insertWithOnConflict

db.insertWithOnConflict(tableName, null, contentValues,SQLiteDatabase.CONFLICT_REPLACE);

实现这一点的一种方法是将表的id声明为主键或用唯一约束赋予它属性。现在,当您尝试输入重复记录时,sqlite会抛出一个异常唯一约束。