Моя проблема: Когда я передаю обновленные данные из моего приложения в базу данных моей комнаты приложений, таблица не обновляется, но при отладке я не получаю никаких ошибок.
Что я сделал: Я выполнил некоторую отладку, но ничто не кажется ошибочным или подразумевающим проблему. Когда я перехожу через код и пропускаю объект «Вопросы» через DAO для комнаты и метод updateQuestion
, он проходит через код комнаты без проблем и завершается.
Что происходит в моем коде: Ниже приведен пример кода. База данных - это ресурс, который копируется во внутреннее хранилище приложений в базах данных. Я подумал, что, возможно, обновляется не та база данных, но не обновляется. Пошагово, вот что происходит:
ArrayList исходных данных сравнивается с обновленным ArrayList для каждого поля, чтобы определить, произошло ли обновление.
Если обнаруживается обновление, создается объект Вопрос, передавая значения для сущностей QuestionID и Вопрос.
// QUESTION
if(!valuesAreDifferent(original.get(4), update.get(4))){
Questions questions = new Questions(orgNoteTableIDs.getQuestionID(), update.get(4));
rdb.getQuestionsDao().updateQuestion(questions);
}
ОБНОВЛЕНИЕ: Я также пытался сделать это без успеха :
if(!valuesAreDifferent(original.get(4), update.get(4))){
Questions questions = rdb.getQuestionsDao().getQuestion(updatedNote.getQuestionID());
questions.setQuestion(update.get(4));
rdb.getQuestionsDao().updateQuestion(questions);
}
Объект Вопросы передается методу DAO updateQuestion в QuestionDao ()
@Dao
public interface QuestionsDao {
@Insert
void addQuestion(Questions question);
@Update
void updateQuestion(Questions question);
@Delete
void deleteQuestion(Questions question);
@Query("SELECT * FROM Questions ORDER BY Question")
List<Questions> getQuestions();
@Query("SELECT * FROM Questions WHERE QuestionID = :questionID")
Questions getQuestion(int questionID);
@Query("SELECT last_insert_rowid()")
int lastQuestionPKID();
@RawQuery
List<Integer> customSearchQuestionsTable(SupportSQLiteQuery query);
}
Отсюда он проходит (я прошел) через код комнаты за DAO без каких-либо очевидных проблем.