как получить столбец count

Я хотел бы получить значение столбца Count из курсора.

public Cursor getRCount(String iplace) throws SQLException
{
 try {
      String strSql = "SELECT COUNT(_id) AS RCount FROM tbName WHERE place= '" + iplace + "'";            
      return db.rawQuery(strSql, null);
    } catch (SQLException e) {
        Log.e("Exception on query", e.toString());
        return null;
    }
} 

Я попытался получить это значение столбца счетчика из курсора, как показано ниже.

Cursor cR = mDbHelper.getRCount(cplace);if (cR.getCount() > 0){long lCount = cR.getLong(0);}cR.close();}

Я получил ошибку отладки. Как получить его?

PS: Могу ли я использовать вложенные курсоры?


person soclose    schedule 12.05.2010    source источник
comment
Вы уверены, что это .NET? Похоже на Яву.   -  person AakashM    schedule 12.05.2010


Ответы (2)


Вы должны использовать служебный метод DatabaseUtils.longForQuery для выполнения запроса к базе данных. и вернуть значение в первом столбце первой строки.

int sometotal=DatabaseUtils.longForQuery(db,"SELECT COUNT(_id) AS RCount FROM tbName WHERE place= '" + iplace + "'",null);
person Pentium10    schedule 12.05.2010
comment
Спасибо, Пентиум. Я добавляю приведение типа к int. int sometotal = (int) DatabaseUtils.longForQuery (db, SELECT COUNT (_id) AS RCount FROM tbName WHERE place = ' + iplace + ', null); - person soclose; 13.05.2010

Cursor располагается перед первой строкой, когда вы возвращаете его из rawQuery(). Позвоните moveToFirst(), прежде чем пытаться использовать Cursor, и ваша проблема должна исчезнуть.

person CommonsWare    schedule 12.05.2010
comment
Как поможет метод moveToFirst(), если Курсор уже находится в начале записей? - person AJW; 09.01.2016
comment
@AJW: новый Cursor не уже находится в начале записей. Новый Cursor имеет свою позицию перед первой строкой, а не на первой строке. - person CommonsWare; 09.01.2016
comment
Попался. Знаете ли вы, что будет лучше с точки зрения эффективности для большой базы данных, метод rawQuery с курсором или метод DatabaseUtils.longForQuery? - person AJW; 09.01.2016
comment
@AJW: я не знаю, что делает longForQuery(). Я предлагаю вам задать отдельный вопрос о переполнении стека по этому поводу. - person CommonsWare; 09.01.2016
comment
Подойдет, ти. p.s. с удовольствием прочитал вашу книгу Busy Coder 2 года назад, когда впервые начал работать с Java и Android. Ваше здоровье. - person AJW; 09.01.2016
comment
@AJW: Спасибо за добрые слова! - person CommonsWare; 09.01.2016