0

我有一个 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);

}
4

2 回答 2

1

如果你能改变onCreate()方法。我建议您为QRCODEYT_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 将不允许您插入QRCODEYT_ID现有行相同的行。

于 2013-05-30T23:03:47.380 回答
1

添加

   UNIQUE (QRCODE, YT_ID) ON CONFLICT IGNORE
于 2013-05-30T23:17:13.747 回答