2014-12-31 2 views
0

Я хочу написать запрос, который будет содержать все строки со строковым значением «left» в столбце DIRECTION. Затем я хочу вернуть эту сумму.Как использовать SQLite COUNT в Android для возврата количества строк

В моем коде snip-it ниже предполагаются данные и база данных.

Вот прототип:

public int getSumLeft() { 
    String selectQuery = "SELECT COUNT("+TableData.TableInfo.DIRECTION+") WHERE "+TableData.TableInfo.DIRECTION+" = left"; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 
    cursor.moveToFirst(); 
    int sum = cursor.getInt(0); 
    cursor.close(); 
    return sum; 
} 

Я пробовал несколько запросов, и это один, кажется, закрывается на то, что мне нужно. Я думаю, проблема связана с выражением «int sum = cursor.getInt (0);»

Я думаю, что нулевой параметр переопределяет результаты. Когда я удаляю нуль, код прерывается. getInt - это функция SQLite, которая используется для доступа к данным в базе данных. Я не создал эту функцию. Но я должен использовать его или другую функцию.

Кроме того, нужно ли цитировать цикл вокруг запроса, чтобы переместить курсор для запроса COUNT? Разве база данных не считается для вас, поэтому нет необходимости в итерации?

Есть ли другой способ подсчета строк, где строковое значение «осталось», и сумма может быть возвращена?

Полный код здесь:

База данных: https://github.com/Leoa/Accelerometer/tree/AccelerometerDEV/app/src/main/java/thedatabase

Реализация (см кнопку в OnCreate функции): https://github.com/Leoa/Accelerometer/blob/AccelerometerDEV/app/src/main/java/com/leobee/accelerometer/MainActivity.java

Спасибо за глядя на это.

ответ

2

Я думаю, что параметр ноль перекрывая результаты

Я понятия не имею, что вы думаете что это означает.

Когда я извлекаю нуля код разбивает

Это потому, что getInt() должен знать столбец Cursor для извлечения.

Вы также терпите крах во время выполнения, так как ваш SQL недействителен. Ваш SQL заявление составляет:

SELECT COUNT(foo) WHERE foo = left 

(где foo является то, что TableData.TableInfo.DIRECTION в Java относится к)

не только делает ваш SQL заявление не хватает таблицы для запроса против, но если left должно быть значение столбца строки, вам нужно процитировать его.Вы завершаете с чем-то вроде:

SELECT COUNT(foo) FROM tablename WHERE foo = 'left' 

мне нужно поставить время цикла вокруг запроса, чтобы переместить курсор для запроса COUNT?

Номер

Есть еще один способ подсчета строк, где значение строки «влево» и сумма может быть возвращена?

Не совсем, кроме исправления, описанного выше.

1

Я думаю, что проблема в том, что вам нужно, чтобы добавить кавычки на «левый»

String selectQuery = "SELECT COUNT("+TableData.TableInfo.DIRECTION+") WHERE "+TableData.TableInfo.DIRECTION+" = 'left'"