Następujące oświadczenie cursor.moveToNext()
jest zawsze fałszywe. Oczekuję, że pętla zostanie wykonana raz. Przetestowałem, że zapytanie faktycznie zwraca dane.Android: SQLite, cursor.moveToNext() zawsze zwraca fałsz
Czy ktoś wie, co się dzieje?
String query ="SELECT(SELECT COUNT(*) FROM Table1) as count1, (SELECT COUNT(*) FROM Table2) as count2;";
Cursor mCursor = mDb.rawQuery(query, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
while (cursor.moveToNext()) { //<---------------return false here???
String result_0=cursor.getString(0);
}
Czy jest to związane bez użycia "FROM" w zapytaniu, aby SQLite nie mógł go zidentyfikować jako vaild? –
nop ... twoje zapytanie powinno zwrócić tylko jeden wiersz, więc gdy użyjesz cursor.moveToFirst() jesteś w pierwszym wierszu ... teraz każde wywołanie moveToNext() zwróci fałsz ... mCursor nigdy nie powinien być pusty, więc używaj czegoś jak 'if (mCursor.moveToFirst()) {do {/ * String res ... twoje rzeczy * /} podczas (mCursor.moveToNext());} else {/ * kursor nie ma wierszy, nie powinno się wydarzyć * /}' lub w tym przypadku (ponieważ powinien zwrócić tylko jeden wiersz 'if (mCursor.moveToFirst()) {/ * String res ... twoje rzeczy * /} else {/ * kursor nie ma wierszy WTF? * /}' – Selvin
kocham kochanie, problem rozwiązany !!! Po usunięciu cursor.moveToFirst() ...... haha –