Следующая функция дает мне за пределы исключение...
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);
}
Это предназначено для возврата количества строк в базе данных. Кто-либо знает что случилось? я, возможно, делаю эту задачу неправильный путь?
Вы упустили
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()
для получения длинного значения первого столбца, когда у вас есть запрос where для общего количества. Это проще, и вам не нужно работать с курсором.
необходимо переместить курсор в первую (и единственную) строку
Cursor mcursor = db.rawQuery(count, null);
mcursor.moveToFirst();
int icount = mcursor.getInt(0);