Я искал это на SO и видел это (и тому подобное): sql direct way to get number of rows in table, однако Select показан как токен, как есть. Я попытался использовать mDb.execSQL(), но возвращает только void. Любая помощь в том, как это сделать, будет оценена по достоинству. Код:
public int getRowNumber() {return mDb.execSQL ("SELECT COUNT (*) FROM notes");} Я получаю сообщение об ошибке «Не удается вернуть результат void».Как получить количество строк в базе данных SQL? (Android SDK)
ответ
ошибки вы получаете означает, что ваш метод не может возвращать void.
сам execSQL
возвращает пустоту, и вы возвращаетесь та же пустотой из вашего собственного метода, который объявляется возвращать INT:
mDB.execSQL(...); // returns void
return mDB.execSQL(...); // re-returns void
public int foo() {
return void; // error!
}
d.android.com link for reference.
Я знаю, что ты уже принял, но вот быстрый & грязный метод тест, который делает то, что вы как бы нужно сделать:
public int testCount() {
Cursor c = m_db.rawQuery("select count(*) from mytable", null);
int tst = 0;
if (c.moveToNext()) {
tst = c.getInt(c.getColumnIndex("count(*)"));
}
c.close();
return tst;
}
Спасибо, как мне заставить его не возвращать пустоту и возвращать результат того, что я ее выполнил? – jersam515
Если вы не можете изменить тип возврата 'execSQL', вам нужно будет сделать что-то еще, например' query', и прочитать возвращенный Cursor, чтобы найти значение int результата, а затем вернуть это из вашего метода. – Pedantic
Большое вам спасибо. – jersam515
mDB.execSQL (...); возвращает void и ваш запрос возвращает запрос, поэтому вы получаете ошибку. Вместо этого вы можете использовать запрос (или) rawQuery, например mDb.rawQuery («SELECT COUNT (*) AS cnt FROM notes», null); который возвращает Cursor, из Cursor получает 'cnt'.
Спасибо. – jersam515
Какой у вас код? Он не должен возвращать пустоту. Метод в указанном вами ответе правильный –
public int getRowNumber() { \t return mDb.execSQL («SELECT COUNT (*) FROM notes»);} Я получаю сообщение об ошибке «Не удается вернуть результат void». Спасибо, что посмотрели. – jersam515
снова прочитайте документацию ... execSQL не для запросов !!!!!!! – Selvin