Проверьте, существует ли пара значений в базе данных SQLite - PullRequest
1 голос
/ 29 июня 2019

У меня есть таблица в моей базе данных 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 голосов
/ 29 июня 2019

Создайте этот метод:

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
}
0 голосов
/ 29 июня 2019

Если вы планируете в конечном итоге выполнить вставку в таблицу 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...