如何插入 SQLite 中不存在的值 Android

How to Insert a value where not exist in SQLite Android

只有当 table 中不存在值时,我才想将值插入到我的 table 中。

 String CREATETABLE = "CREATE TABLE contacts ( " +
                "id INTEGER PRIMARY KEY AUTOINCREMENT, " + 
                "name TEXT, "+
                "phone TEXT )";

这是我创建 table 的代码,我使用了 UNIQUE(phone),但它不起作用。

要添加新联系人,我正在使用此代码:

 ContentValues values = new ContentValues();
values.put("name", contact.getName()); // get title 
values.put("phone", contact.getNumero()); // get author
// 3. insert
db.insert("contacts", // table
        null, //nullColumnHack
        values);

我不认为有一种方法可以在不先检索行的情况下做到这一点。您查询数据库以查找该特定联系人(您必须指定至少一列是唯一的,或者任何列的组合为主键)否则您将如何处理两个同名的人?

所以你查询并搜索想要的人,如果你找到了,检查该列是否为空并且 a) 如果是则插入,b) 如果不是则忽略。如果查询没有找到任何人,则不能直接插入。

关于唯一约束,是这样的:

 String CREATETABLE = "CREATE TABLE contacts ( " +
       "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
       "name TEXT, " +
       "phone TEXT UNIQUE)";

在您的示例中,您使用的是 SQLiteDatabase.insert(), try to use SQLiteDatabase.insertWithOnConflict() with one of values CONFLICT_IGNORE, CONFLICT_REPLACE 或其他。

另请参阅如何将数据库实现为 ContentProvider,这更难理解,但了解起来确实很好。