1

我想从两个编辑文本中输入姓名和电话号码。我使用两个按钮保存并使用列表视图在模拟器中显示它。输入姓名后,当我单击保存按钮时,如何检查我是否已经输入了相同的姓名。我是 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;



}
4

2 回答 2

2

我将首先通过添加 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如果输入参数 'conflictAlgorithm' = CONFLICT_IGNORE 或 -1 如果有任何错误,将返回新记录的 id 或现有行的主键。

就个人而言,我会使用insertWithOnConflictCONFLICT_IGNORE 标志集。这样,您可以获取重复记录的行 ID(以及不让重复记录输入)。

于 2012-07-06T04:47:02.233 回答
0

放入UNIQUE您的表字段定义,然后使用insertOrThrow. 如果插入相同,insertOrThrow会引发异常,可以拦截。

于 2012-07-05T20:38:28.337 回答