如何插入 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
,这更难理解,但了解起来确实很好。
只有当 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
,这更难理解,但了解起来确实很好。