我想从两个编辑文本中输入姓名和电话号码。我使用两个按钮保存并使用 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/