Рассмотрим этот метод в классе DatabaseHelper:
public Cursor getRules()
{
SQLiteDatabase db=this.getReadableDatabase();
Cursor cur=db.rawQuery("SELECT * from Rules",new String [] {});
Log.d("Cursor Size", "" + cur.getCount());
db.close();
return cur;
}
Возвращает Курсор, и на активности я его потребляю как
Cursor ruleCursor=DatabaseHelper.getInstance(this).getRules();
if(ruleCursor!=null)
{
RuleManager.getInstance(this,null).loadRules(ruleCursor);
ruleCursor.close();
}
(я не перемещаю всю обработку курсора внутри класса DatabaseHelper и возвращаю просто список объектов вместо курсора), проблема в том, что если я не запишу Log.d в getRules (), произойдет сбой всей программы. я получаю сообщение об ошибке «Неверный оператор в fillWindow ()», и SQLite не возвращает ни одной строки в операторе «Выбор».
Просто добавление Log.d для cursor.getCount () решает все. Кроме того, надо упомянуть, что до вчерашнего дня эта штука работала нормально и так себя ведет с прошлого вечера.
Я что-то упустил? Ожидается ли такое поведение?