android - 如何检查android数据库中的重复名称?

标签 android database cursor duplicate-data

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



}

最佳答案

我将从通过添加 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 如果有任何错误。

就我个人而言,我会使用设置了 CONFLICT_IGNORE 标志的 insertWithOnConflict。这样您就可以取回重复记录的行 ID(同时不让重复项被输入)。

关于android - 如何检查android数据库中的重复名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352081/

相关文章:

android - 从图库中选取图像并设置为 imageview

android - 在手机上测量 "real"电话信号强度

android - 为什么我的布局不遵守约束?

mysql - 存储过程不在mysql中使用游标返回多行

java - Android SQLite DB 适配器更新 DB

mysql - 什么时候使用关系数据库结构?

javascript - 如何检查光标是否在指定标签之间

javascript - 为什么移动 div 会在手机上的 javascript 中留下痕迹?

java - 字符串操作

iphone - apple ios 购买收据数据的可能最大长度是多少?