#android #database #sqlite
#Android #База данных #sqlite
Вопрос:
Я сохраняю данные в sqlite на своем устройстве Android в таблице, где текущий месяц является первичным ключом. Затем я перезагружаюсь и продолжаю обновлять данные через регулярные промежутки времени и извлекаю данные из sqlite, и он показывает мне точную цифру. Но после всех последующих перезагрузок он показывает мне начальное значение при первой перезагрузке, а не показывает последнее обновленное значение. Я не могу найти, где хранится начальное значение, кэширует ли sqlite значение. Я застрял с этой проблемой в течение последних двух дней. Кто-нибудь когда-либо сталкивался с этой проблемой. Вот мой код.Код для таблицы:
SQLiteDatabase dataUsageDataBase = null;
private final String TOTAL_DATA_TABLE ="DeviceData";
dataUsageDataBase.execSQL("CREATE TABLE IF NOT EXISTS " TOTAL_DATA_TABLE "( presentMonth INT , Data1 INT(12),Data2 INT(12),Data3 INT(12),Data4 INT(12),PRIMARY KEY(presentMonth) );
todayMonth — это число, представляющее текущий месяц (от 0 до 11)
Курсор для извлечения старого значения:
Cursor totalData = dataUsageDataBase.rawQuery("SELECT * FROM " TOTAL_DATA_TABLE " WHERE presentMonth = " todayMonth "", null);
// Здесь выполняется некоторый расчет данных после извлечения данных
Затем удаляет исходящие данные и вставляет новую запись
dataUsageDataBase.delete(TOTAL_DATA_TABLE, " presentMonth = " todayMonth "" , null);
dataUsageDataBase.execSQL("INSERT INTO " TOTAL_DATA_TABLE " Values( " todayMonth "," Data1 "," Data2 "," Data3 "," Data4 ");");
Комментарии:
1. Можете ли вы поделиться своим кодом?
2. Я добавил приведенный выше код. Пожалуйста, посмотрите.
3. Ну, этот код не очень помогает. Пожалуйста, помните о закрытии вашей базы данных в OnClose() вашей активности.
4. Я создаю и закрываю базу данных в своем собственном классе, я не расширил SQLiteOpenHeler. Я закрываю базу данных после завершения вычисления данных в блоке finally.
5. Вызываете ли вы это dataUsageDataBase.close(), пока ваша активность закрыта или уничтожена.