Я думаю, что это может работать:
ользую Room для того, чтобы сохранить данные. У меня есть объект, который имеет автоматически сгенерированный первичный ключ, который имитирует систему заявок.
Сущность:
@Entity
public class SequenceAction {
@PrimaryKey(autoGenerate = true)
private Integer sequenceId;
private String actionType;
private String extraInfo;
//getters&setters
}
Инициализация:
sequenceAction = new SequenceAction();
sequenceAction.setActionType(COLLECT_ALL);
sequenceAction.setExtraInfo("id = " + ids.get(i));
//run this line with executer(sequenceId is automatically set on insert to table):
AppDatabase.getInstance(getContext()).sequenceActionDao().save(sequenceAction);
При каждом запуске приложения этот ключ должен начинаться с 0.
я используюAppDatabase.getInstance(getApplicationContext()).clearAllTables();
чтобы очистить таблицы на выходе, но этоне сбросить начальный индекс ключа, вместо этого он начинает с того места, где остановился при последнем запуске.
Я не нашел способ сделать это с помощью Room, поэтому я пытаюсь сделать это с помощью SimpleSQLiteQuery:
new SimpleSQLiteQuery("...query...");
Перешел к методу RawQuery в моем Дао:
@RawQuery() Integer init(SimpleSQLiteQuery query);
Я пробовал следующие запросы:
"ALTER TABLE SequenceAction AUTO_INCREMENT = 0"
Я получаю сообщение об ошибке (я пробовал это с «AUTOINCREMENT», та же ошибка):
android.database.sqlite.SQLiteException: возле "AUTO_INCREMENT": синтаксическая ошибка (код 1): при компиляции: ALTER TABLE SequenceAction AUTO_INCREMENT = 0
вероятно, потому что, какэтот вопрос / ответ утверждает, что в SQLite нет ключевого слова автоинкремента, вместо этого столбец, объявленный INTEGER PRIMARY KEY, автоматически автоинкремментирует.
"delete from sqlite_sequence where name='SequenceAction'"
Нет ошибки, но индекс также не сбрасывается.
Как предложеноВот:
"UPDATE SQLITE_SEQUENCE SET seq = -1 WHERE name = 'SequenceAction'"
Нет ошибки, но нет эффекта.
"TRUNCATE TABLE 'SequenceAction';"
Ошибка (возможно потому чтоSQLite не поддерживает команду TRUNCATE):
android.database.sqlite.SQLiteException: возле "TRUNCATE": синтаксическая ошибка (код 1): при компиляции: TRUNCATE TABLE 'SequenceAction';
Итак ... последняя попытка:DELETE FROM SequenceAction
Нет ошибки, нет эффекта.