Intereting Posts
Кордова 3.5.0 Ошибка установки – установите Android-цель 19 Отказ APK от Android с помощью java.lang.AssertionError: невозможно в java.lang.Enum Как удалить приложение с активным админом устройства на Android? Переименование модулей в Android Studio? Система инвентаризации игр для Android Как подключить источник библиотеки поддержки Android в Eclipse? Идентификатор GCM ID Android возвращает в некоторых случаях «MESSENGER», в то время как работает отлично в большинстве случаев. Не удалось найти причину Общие предпочтения между двумя процессами одного и того же приложения Обмен URL-адресом на Facebook, Twitter и электронную почту на Android? Как получить событие клика в тексте маркера Android FaceDetector.Face Euler углы – 0 все время Использование табулятора / tabspace в TextView Как создать приложение социальной сети на Android Как остановить сообщения logcat Является ли Parse.com подходящей услугой для резервного копирования / синхронизации с SQLite в Android?

Исключение SQLite Cursor вне пределов исключения в SELECT count (*) FROM table

Следующая функция дает мне исключение за пределы …

public void count(){ SQLiteDatabase db = table.getWritableDatabase(); String count = "SELECT count(*) FROM table"; Cursor mcursor = db.rawQuery(count, null); int icount = mcursor.getInt(0); System.out.println("NUMBER IN DB: " + icount); } 

Он предназначен для возврата количества строк в базе данных. Кто-нибудь знает, что случилось? Я, возможно, неправильно выполняю эту задачу?

Solutions Collecting From Web of "Исключение SQLite Cursor вне пределов исключения в SELECT count (*) FROM table"

Вы пропустили

 mcursor.moveToFirst(); public void count(){ SQLiteDatabase db = table.getWritableDatabase(); String count = "SELECT count(*) FROM table"; Cursor mcursor = db.rawQuery(count, null); mcursor.moveToFirst(); int icount = mcursor.getInt(0); System.out.println("NUMBER IN DB: " + icount); } 

Но вы должны использовать лучшие методы для этой задачи, такие как встроенные помощники DatabaseUtils

такие как

 public long count() { return DatabaseUtils.queryNumEntries(db,'tablename'); } 

Возможно, вам будет полезно использовать DatabaseUtils.longForQuery() чтобы получить значение первого столбца, когда у вас есть запрос на общий счет. Это проще, и вам не нужна эта куча работы с курсором.

Нужно переместить курсор в первую (и только) строку

 Cursor mcursor = db.rawQuery(count, null); mcursor.moveToFirst(); int icount = mcursor.getInt(0); 

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

 public int numbersOfrows (int id) { SQLiteDatabase db = this.getReadableDatabase(); int numbersOfrows = 0 ; Cursor c = db.rawQuery("select count(*) from table_name where Column_name = 'yourValue'") if (c.moveToFirst()){ numbersOfrows = c.getInt(0); } return numbersOfrows ; }