2015-02-04 2 views
1

Я пытаюсь получить количество записей, которые хранит моя БД, самым простым способом.Не удалось прочитать строку 0, col 1 из CursorWindow

Я пытаюсь использовать rawQuery «SELECT Count(*) FROM Students», а затем из курсора, чтобы получить метод getInt, чтобы получить номер и использовать его позже.

это мой метод

public int getNumberOfEntries() { 
     SQLiteDatabase db = helper.getWritableDatabase(); 
     String query = ShaqedDB.NUMBER_OF_ENTRIES; 
     Cursor d = db.rawQuery(query, null); 
     d.moveToFirst(); 
     while (!d.isAfterLast()) { 
      int numberReturned = d.getInt(0); 
      d.moveToNext(); 
      return numberReturned; 
     } 
     return 0; 
} 

Я посмотрел везде - и я не могу найти решение, почему я постоянно получаю ошибку курсора, что курсор не может прочитать строку 0, столбец 1 ... даже хотя я думаю, что я указываю ему на col 0

ответ

0

, если вам не нужно писать, вы должны использовать getReadableDatabase(); вместо getWritableDatabase();. В

d.getInt(0); 

0 является индекс столбца вы хотите, чтобы получить значение. Не переустанавливайте значение. Запросить курсор для получения индекса столбца

d.getInt(d.getColumnIndexOrThrow("COLUMN_NAME")); 

по вашему запросу, вы хотите теперь получить количество результатов, возвращаемых вашим запросом. Вы можете получить это значение, задавая количество курсора:

public int getNumberOfEntries() { 
     SQLiteDatabase db = helper.getReadableDatabase(); 
     String query = ShaqedDB.NUMBER_OF_ENTRIES; 
     Cursor d = db.rawQuery(query, null); 
     return d.getCount(); 
} 
+0

Эй человек, я попытался изменить к ReadableDatabase() и GetColumn, но я получаю ту же ошибку ... - просто уточнить - все, что я хочу знать, сколько записей (строк) имеет моя таблица и возвращает значение «int» для него – shaqed

+0

попробуйте с помощью «SELECT * FROM Students» – Blackbelt

+0

спасибо Blackbelt, я поменял свой подход, и это сработало – shaqed

Смежные вопросы