Android SQLite中的查询

Android SQLite中的查询,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我的应用程序中有以下insert语句,可以使用。 在插入之前,如果名称列中不存在值名称,我想首先检查数据库。 如果不存在,我希望继续插入,否则显示错误消息 我如何将其纳入我的现有声明中 public void insert(HashMap<String, String> queryValues){ SQLiteDatabase database = this.getWritableDatabase(); ContentValues values = new Con

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

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

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

}
public void插入(HashMap查询值){
SQLiteDatabase=this.getWritableDatabase();
ContentValues=新的ContentValues();
游标c=database.query(“从用户详细信息中选择*,其中“+”name=?”,新字符串[]{values.put(“name”)});
如果(c.getCount()>0){
//不要这样做
返回;
}
否则{
value.put(“name”),queryvalue.get(“name”);
value.put(“年龄”),queryvalue.get(“年龄”);
数据库。插入(“用户”,空,值);
}
close()数据库;
}

正确的方法是在名称字段上添加一个
唯一的
约束,然后使用
insertWithOnConflict()
,最后一个参数为
CONFLICT\u FAIL
。这实际上是默认行为。如果插入会导致约束冲突,则插入将失败(
insert()
将返回-1)

如果你不想那样做,那就没有魔法了。查询数据库中具有给定名称字段的行。如果返回>0行,则不执行插入

Cursor c = db.query(..., "name=?", new String[] {theName}, ...);
if (c.getCount > 0) {
  // don't do it
  return;
}

非常感谢,我已经编辑了代码,但是select语句似乎有问题。我没有给出select的确切语法。有关详细信息,请参阅Android SDK参考。