새로운 계산을 위해 마지막 elemnt를 확인하기 위해 데이터베이스에 액세스하는 알고리즘을 구현해야합니다. 데이터베이스가 비어 있고 내가 그것을 방지하기 위해 cursor.getCount always = 0
IndexOutOfBoundsException) index 0 requested with a size of 0
를 얻을 수 있기 때문에 물론, 처음이 불가능하다, 나는
cursor.getCount==0
있는지 확인하기 위해 노력하고 나는 기본적으로 첫 번째 요소를 소개합니다. 문제는 데이터베이스에 저장 한 경우에도 이
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 + "=?"필터가 예상 한대로 수행하지 않을 수 있습니다. –