如何在Android的数据库检查重复的名字吗?(How to check duplicates na

2019-07-30 06:46发布

我想从两个编辑输入姓名和电话号码text.i使用两个按钮来保存和使用名单view.After输入名称显示它在模拟器,当我点击保存按钮如何检查自己是否已经进入了相同的名称。 我是新来的Android解释将是很有益的。

public void onCreate(SQLiteDatabase db) {

    db.execSQL("CREATE TABLE "+tbname+"("+Key_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+Key_name+" TEXT,"+Key_mobile+" TEXT)");

}

public void n(String aa, String bb) {
    SQLiteDatabase db=this.getWritableDatabase();
    ContentValues cv=new ContentValues();
    cv.put(Key_name, aa);
    cv.put(Key_mobile, bb);
    db.insert(tbname, Key_name, cv);

    db.close();

}

public Cursor cr()

{
    SQLiteDatabase db=getReadableDatabase();
    String [] colms=new String[]{Key_id+" as _id",Key_name,Key_mobile};
    Cursor cur=db.query(tbname, colms, null, null, null, null, null);
    cur.moveToFirst();
    return cur;



}

Answer 1:

我会通过添加NOT NULL和UNIQUE约束改变你的表定义开始。

db.execSQL("CREATE TABLE "+tbname+"("+Key_id+" INTEGER PRIMARY KEY AUTOINCREMENT, "+Key_name+" TEXT NOT NULL UNIQUE,"+Key_mobile+" TEXT)"); 

然后,你有一个选择的方法来使用你的插件。 您可以使用:

insertOrThrow将返回ID的新纪录,或-1上的错误(和没有将是一个错误的唯一名称的约束失效)。

insertWithOnConflict将返回新记录的ID或现有行的主键,如果输入参数“conflictAlgorithm” = CONFLICT_IGNORE或-1,如果任何错误。

就个人而言,我会用insertWithOnConflict与CONFLICT_IGNORE标志设置。 这样,就可以得到该行的ID回重复记录(以及不让重复的GET输入)。



Answer 2:

UNIQUE您的表字段定义的,然后使用insertOrThrow 。 如果您插入相同, insertOrThrow将导致异常,您可以拦截它。



文章来源: How to check duplicates name in android database?