Как вставить данные несколько имен из таблицы SQLite в EditText при каждом входе одно отдельное имя
Подскажите куда двигаться, может лучше использовать SharedPreference для такой задачи?
Или у меня запрос неправильный. Заранее Спасибо
Могу прислать весь код разработки если не понятно
сursor = db.rawQuery("SELECT Name FROM tablename WHERE id = 1 ", null);
String name1 = "";
if (сursor.moveToFirst()) {
name = сursor.getString(сursor.getColumnIndexOrThrow("Name"));
}
сursor.close();
editText_name.setText(name);
}
Ответы (1 шт):
Схематично.
Подготовка. Добавляем в таблицу поле резервирования.
ALTER TABLE tablename ADD COLUMN reservation BIGINT DEFAULT NULL;
Этап 1 - проверяем, есть ли уже зарезервированные за текущим юзером или свободные записи. Если есть - получим единицу, иначе получим ноль, можно огорчить юзера и дальше не стараться.
SELECT EXISTS (
SELECT NULL
FROM reservation
WHERE reservation = @current_user_id
OR reservation IS NULL
);
Этап 2 - пробуем зарезервировать себе имя. Если зарезервированная запись уже имеется, или если не имеется свободных записей (кто-то успел между этапами 1 и 2) - запрос обновит 0 записей, иначе обновится одна запись.
UPDATE tablename
SET reservation = @current_user_id
WHERE reservation IS NULL
AND NOT EXISTS (
SELECT NULL
FROM tablename
WHERE reservation = @current_user_id
)
LIMIT 1;
Этап 3 - получаем ID зарезервированной записи и имя. Если зарезервированная запись уже имелась, или если резервирование успешно, вернётся ID этой записи, иначе (если эту запись кто-то перехватил) вернётся пустой набор данных, в этом случае следует повторить этапы 1-3.
SELECT id, name
FROM reservation
WHERE reservation = @current_user_id;
Метод не требует транзакций и блокировок.
Если имена выдаются временно и должны освобождаться после использования, это делает
UPDATE tablename
SET reservation = NULL
WHERE reservation = @current_user_id;
Записи, зависшие по причине некорректного, без освобождения, выхода, освобождаются планировщиком на основании излишней длительности периода с момента резервирования.