检查SQLite数据库中是否存在几个值

时间:2019-06-29 15:17:22

标签: java android database sqlite

我在SQLite数据库中有一个表,该表由几个int组成,我想在添加新行之前检查夫妇是否已经存在。

我有这个函数,它从表TableName(id1,id2)返回数据:

public Cursor getIds() {
        return db.rawQuery("SELECT * FROM " + TABLE_NAME, null);
    }

在另一堂课中,我有这些:

int int1 = 14
int int2 = 2564

if (????) {
        m.addToTable(int1, int2);
} else {
        //Datas already exists
}

将int1与列id1中的值进行比较并将int2与列id2中的值进行比较,我需要做什么?

2 个答案:

答案 0 :(得分:0)

如果您打算最终在SQLite表中进行插入,并且想避免这种情况,那么应该在已经包含两个值的记录中进行选择,

INSERT INTO TableName (id1, id2)
SELECT ?, ?
WHERE NOT EXISTS (SELECT 1 FROM TableName WHERE id1 = ? and id2 = ?);

对于?占位符,您将绑定两个要插入的值。对于您给出的示例,最终将运行以下查询:

INSERT INTO TableName (id1, id2)
SELECT 14, 2564
WHERE NOT EXISTS (SELECT 1 FROM TableName WHERE id1 = 14 and id2 = 2564);

答案 1 :(得分:0)

创建此方法:

public boolean existIds(int id1, int id2) {
    Cursor c = db.rawQuery(
            "SELECT * FROM " + TABLE_NAME + " WHERE id1 = ? AND id2 = ?",
            new String[]{String.valueOf(id1), String.valueOf(id2)}
    );
    boolean result = c.getCount() > 0;
    c.close();
    return result;
}

现在您可以在代码中使用它了:

int int1 = 14
int int2 = 2564

if (!existIds(int1, int2)) {
    m.addToTable(int1, int2);
} else {
    //do something because the ids already exist
}