SQLite Count где запрос - PullRequest
       21

SQLite Count где запрос

1 голос
/ 26 сентября 2011

Я использую простой SQL-запрос Lite для извлечения значения счетчика из таблицы.

Cursor cursor = db.rawQuery("SELECT sum(name2) FROM " + TABLE_NAME, null);
if (cursor.moveToFirst()) {
   return cursor.getInt(0);
}
return cursor.getInt(0);

Это хорошо работает

Но когда я добавляю предложение where к запросу select

Cursor cursor = db.rawQuery("SELECT sum(name2) FROM " + TABLE_NAME + "WHERE name in (" + k + ")", null);
if(cursor.moveToFirst()) {
   return cursor.getInt(0);
}
return cursor.getInt(0);

процесс неожиданно останавливается .......

Ответы [ 2 ]

4 голосов
/ 26 сентября 2011

Вам не хватает пробела перед WHERE: ... + TABLE_NAME + "WHERE name ...

Но в вашем коде много неправильного:

  • Почему выиспользовать rawQuery(), когда есть хорошие методы, такие как query(table, columns, selection, selectionArgs, groupBy, having, orderBy), которые избавляют вас от создания строк запросов с риском внедрения SQL?Даже rawQuery() принимает аргументы запроса в качестве второго параметра.

  • Где вы закроете свой Cursor?Таким образом вы потеряете память.

  • Что произойдет, если cursor.moveToFirst() вернет false и вы выполните строку после вашего if -блока?Это вылетит.

0 голосов
/ 26 сентября 2011

Проверьте значение этой переменной k, оно может быть недопустимым для оператора sql IN.

...