我有一个QR列表适配器,我在其中添加值(qr代码和youtube id):
public void add(String qrcode, String ytid){
ContentValues values = new ContentValues();
values.put(DatabaseHelper.QRCODE, qrcode);
values.put(DatabaseHelper.YT_ID, ytid);
context.getContentResolver().insert(YouListContentProvider.CONTENT_URI, values);
QRItem item = new QRItem(YouListContentProvider.lastId, qrcode, ytid);
list.getQRItems().add(item);
notifyDataSetChanged();
}
我希望能够预先搜索数据库,如果值(QRCODE和youtube ID)已经存在(视频已经在数据库中),那么就不要将它们添加到列表中。我的数据库帮助器如下所示:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + "("
+ID+" INTEGER PRIMARY KEY, "
+QRCODE+" TEXT, "
+YT_ID+" TEXT )");
PutValues(db);
}
答案 0 :(得分:1)
如果您能够更改onCreate()
方法。我建议您为QRCODE
和YT_ID
列创建索引:
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + "("
+ ID +" INTEGER PRIMARY KEY, "
+ QRCODE + " TEXT, "
+ YT_ID +" TEXT,
+ UNIQUE (QRCODE, YT_ID) )");
PutValues(db);
}
现在,SQLite不允许您插入QRCODE
和YT_ID
与现有行相同的行。
答案 1 :(得分:1)
添加
UNIQUE (QRCODE, YT_ID) ON CONFLICT IGNORE