2015-04-09 2 views
-1

Почему мой getAccountCount возвращает только 1, когда в моей базе данных несколько записей. Разве это не правильный способ получить количество записей в моей таблице ACCOUNTS?Почему SELECT COUNT (*) возвращается 1

getAccountCount

int getAccountCount() { 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cur = db.rawQuery("SELECT COUNT (*) FROM " + ACCOUNTS, null); 
    int x = cur.getCount(); 
    cur.close(); 
    return x; 
} 

Назвав его от другой деятельности

dbHelper = new DatabaseHelper(this); 
    txtNo.setText(String.valueOf(dbHelper.getAccountCount())); 

Слегка смущенный моим ляп так вот попытка восстановить немного достоинства; _ ;.

В любом случае извинитесь за мою ошибку и благодарю вас за помощь. Я возился с учебным кодом, который первоначально имел SELECT * FROM myTable, но я где-то читал, что использование SELECT * в большом db может потенциально повлиять на производительность, так как SELECT * дает список записей со всеми столбцами из таблицы, тогда как SELECT COUNT * просто подсчитывает строки. Но когда я заменил SELECT * FROM myTableSELECT COUNT (*) FROM myTable, я забыл изменить интерпретацию cur и просто продолжал в предположении, что мой getAccountCount() был в порядке.

Еще раз спасибо за помощь и критику, оба оценены. Ура!

+0

и без брекетов вокруг звездочки? – user2818782

+0

FSM сохранить нас! ... сколько строк с count возвращает этот запрос? ... 1 ... так что вы ожидали ... вы должны принять значение из первой строки, не считая строк – Selvin

ответ

3

Почему мой getAccountCount возвращается только 1, когда есть несколько записей в моей базе данных

Поскольку Cursor.getCount() возвращает количество для строк в текущем курсоре вместо значения счетчика.

Чтобы получить COUNT значение от использования курсора Cursor.getInt с 0 позиции:

cur.moveToFirst(); 
int x = mcursor.getInt(0); 
+0

Принять этот ответ уже –

1

Вы не хотите GetCount(). Даже если результат SELECT COUNT (*) является 5, GetCount() будет 1 ...

вы скорее должны сделать что-то вроде

if (cursor.moveToFirst()) // data? 
    System.out.println(cursor.getInt(0); 
2

Это вернет Nomber записей в таблице

int numRows =(int) DatabaseUtils.queryNumEntries(db, "table_name"); 
Смежные вопросы