Android SQLite中的查询
我的应用程序中有以下insert语句,可以使用。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
在插入之前,如果名称列中不存在值名称,我想首先检查数据库。
如果不存在,我希望继续插入,否则显示错误消息 我如何将其纳入我的现有声明中
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参考。