Использование изменения целых чисел с базой данных UserInput SQL - PullRequest
0 голосов
/ 10 октября 2018

Я очень новичок в Java, поэтому, пожалуйста, прости любые ошибки, которые я совершаю.

В настоящее время я разрабатываю приложение с автоматическим списком TODO, которое сортирует список задач, введенных пользователем, и расставляет приоритеты для наиболее важныхиз них.

После того, как пользователь добавил задачу, она будет добавлена ​​в базу данных SQLite .Я хотел бы знать, как я мог бы связать целое число с каждой отдельной задачей.

Например: скажем, есть целое число с именем Priority , которое имеет значение по умолчанию 10 .С каждой добавленной задачей они начинаются со значения по умолчанию Приоритет = 10, но меняются в соответствии с требованиями пользователя.

Так что, если значение по умолчанию для одной задачи Приоритет = 10, Приоритет может увеличиться на 11, тогда как другая задача в том же списке, которая начинается с Приоритет = 10, может быть уменьшена до Приоритет = 9. Я очень не уверенЧто касается того, как я могу сделать, чтобы каждое добавленное в базу данных задание имело индивидуальное значение, которое регулярно меняется.

Если вы хотите, чтобы я продолжил в этом вопросе, я был бы рад, поскольку мое объяснение может сбить с толку.

Заранее спасибо!

1 Ответ

0 голосов
/ 10 октября 2018

Возможно, вы могли бы использовать TRIGGER SQL как понятый SQLite - CREATE TRIGGER

Например, рассмотрите следующее: -

DROP TABLE IF EXISTS tasks;
CREATE TABLE IF NOT EXISTS tasks (ID INTEGER PRIMARY KEY, name TEXT, user_reference INTEGER, priority DEFAULT 10);
DROP TRIGGER IF EXISTS set_task_priority;

-- Create the Trigger
CREATE TRIGGER IF NOT EXISTS set_task_priority 
    AFTER INSERT ON tasks
    WHEN ((SELECT count() FROM tasks WHERE user_reference = new.user_reference) > 3)
    BEGIN   
        UPDATE tasks SET priority = new.priority + (SELECT  count() FROM  tasks WHERE user_reference = new.user_reference)
        WHERE ID = new.ID
     ;
    END;

-- Add some data to test the trigger
INSERT INTO tasks (user_reference,name) VALUES 
    (1,'CLEAN'),(1,'TIDY'),(1,'VACUMN'),(1,'WASH'),(1,'THINK'),
    (2,'CLEAN'),(2,'TIDY'),(2,'VACUMN'),(2,'WASH'),
    (3,'CLEAN'),(3,'TIDY'),(3,'VACUMN'),(3,'WASH'),(3,'THINK'),(3,'STUDY'),
    (3,'CLEAN'),(3,'TIDY'),(3,'VACUMN'),(3,'WASH'),(3,'THINK'),(3,'STUDY'),
    (3,'CLEAN'),(3,'TIDY'),(3,'VACUMN'),(3,'WASH'),(3,'THINK'),(3,'STUDY'),
    (3,'CLEAN'),(3,'TIDY'),(3,'VACUMN'),(3,'WASH'),(3,'THINK'),(3,'STUDY')
;
INSERT INTO tasks (user_reference,name) VALUES (3,'SLEEP');
SELECT * FROM tasks;
  • ПримечаниеЭто не является решением вашей проблемы (которая, как вы говорите, не объяснена), но является примером того, как TRIGGER может автоматически применять изменения (в данном случае после вставки строки).

Следующие результаты: -

enter image description here

Вы говорите

Я хотел бы знать, какЯ мог бы связать целое число с каждой отдельной задачей.

Каждая задача, указанная выше, имеет свое собственное уникальное целое число, идентификатор rowid или в указанном выше id как псевдоним ROWID . Rowid Tables .

Возможно, даже что-то вроде: -

CREATE TABLE IF NOT EXISTS tasks (ID INTEGER PRIMARY KEY, name TEXT, user_reference INTEGER, priority DEFAULT (ABS(random() % 100)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...