我在我的应用程序中有以下插入语句 在插入之前,我想首先检查数据库是否在名称列中不存在值名称 如果它不存在,我想继续插入,否则显示错误消息。
如何将其纳入我现有的声明中?
public void insert(HashMap<String, String> queryValues){
SQLiteDatabase database = this.getWritableDatabase();
ContentValues values = new ContentValues();
Cursor c = database.query("SELECT * FROM user_details where" + "name=?", new String[] {values.put("name") });
if (c.getCount() > 0) {
// don't do it
return;
}
else {
values.put("name", queryValues.get("name"));
values.put("age", queryValues.get("age"));
database.insert("user", null, values);
}
database.close();
}
答案 0 :(得分:0)
执行此操作的正确方法是在名称字段上添加unique
约束,然后将insertWithOnConflict()
与最后一个参数CONFLICT_FAIL
一起使用。这实际上是默认行为。如果否则会导致约束违规,您的插入将失败(insert()
将返回-1)。
如果你不想这样做,那就没有魔力了。在DB中查询具有给定名称字段的行。如果您返回&gt; 0行,请不要执行插入。
Cursor c = db.query(..., "name=?", new String[] {theName}, ...);
if (c.getCount > 0) {
// don't do it
return;
}