SQLite中的查询

时间:2015-11-14 00:01:02

标签: android sqlite android-sqlite

我在我的应用程序中有以下插入语句 在插入之前,我想首先检查数据库是否在名称列中不存在值名称 如果它不存在,我想继续插入,否则显示错误消息。

如何将其纳入我现有的声明中?

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();

}

1 个答案:

答案 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;
}