Мне нужно реализовать алгоритм, который обращается к базе данных, чтобы проверить последний элемент, чтобы вычислить новый. Конечно, в первый раз, это было бы невозможно, так как база данных пуста, и я получаюcursor.getCount always = 0
IndexOutOfBoundsException) index 0 requested with a size of 0
Чтобы избежать этого, я попытался проверить, если cursor.getCount==0
, а затем я ввожу первый элемент по умолчанию. Проблема в том, что даже когда я сохранил ее в базе данных, cursor.getCount
продолжает оставаться 0
. Вот код моего метода:
public Measures getLastMeasure(String date) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_MEASURES, new String[] { KEY_ID,
KEY_DATE, KEY_TIME_HOUR, KEY_TIME_MINUTE, KEY_BE_INTAKE,
KEY_GLUCOSE, KEY_BOLUS, KEY_BASAL }, KEY_DATE + "=?",
new String[] { date }, null, null, KEY_TIME_HOUR + " DESC, "
+ KEY_TIME_MINUTE + " DESC", "1");
if (cursor.getCount() == 0) {
Measures m = new Measures("nodate", 0, 0, 0, 0, 0, 0);
return m;
} else {
if (cursor != null)
cursor.moveToFirst();
Measures m = new Measures(Long.parseLong(cursor.getString(0)), // id
cursor.getString(1), // date
Integer.parseInt(cursor.getString(2)), // timeHour
Integer.parseInt(cursor.getString(3)), // timeMinute
Double.parseDouble(cursor.getString(4)), // BE intake
Double.parseDouble(cursor.getString(5)), // glucose
Double.parseDouble(cursor.getString(6)), // bolus
Double.parseDouble(cursor.getString(7)) // basal
);
// return m
return m;
}
}
Надеюсь, вы можете мне помочь. Спасибо заранее всем.
Если у вас есть данные в вашей базе данных, и курсор всегда возвращает 0 строк, возможно, ваш фильтр 'KEY_DATE +" =? "' Не выполняет то, что вы ожидаете от него. –