2016-10-25 2 views
0

У меня есть запрос, которыйcursor.getCount() возвращение 1, но должен был возвратить 0

SELECT SUM(amount) AS total FROM transactions WHERE transaction_date > 1477333800 

Для этого запроса cursor.getCount() возвращается 1. Но при повторении курсора значение приближается к нулю.

public Cursor getTotalForToday(long start) 
{ 
    SQLiteDatabase db = this.getReadableDatabase();   
    Cursor c = db.rawQuery("SELECT SUM(amount) AS total FROM "+TRANSACTION_TABLE+" WHERE transaction_date > "+start, null); 
    return c; 
} 

Cursor cursor = db.getTotalForToday(); 
if(cursor.getCount() == 0) // this is evaluating to false 
{ 
    forToday.setText("Zero"); //forToday is TextView 
} 
else 
{ 
    while(cursor.moveToNext()) 
    { 
     String total_today = cursor.getString(0); // this is returning null 
     forToday.setText(total_today); 
    } 
} 

PS: Тип данных amount является целым числом в таблице

Если я запрашиваю то же самое в расширении SQLLite Firefox, я получаю следующий вывод SS1

В идеале, количество возвращаемых строк должно было быть 0, но я не знаю, почему он возвращается как 1. Вот данные в таблице кстати: SS2

ответ

2

Совокупные функции SQL, такие как SUM(), всегда возвращают строку результатов. Сам результат может быть нулевым.

+0

Darn! Это то, что я только что понял. Красный цвет фона на первом снимке экрана был хорошим намеком. – asprin

Смежные вопросы