Попробуйте
String SELECT_TABLE_QUERY = "SELECT * FROM " + TABLE_NAME + " WHERE " + COLUMN_LEVEL + " = '" + levelID + "' Limit 1";
Это должно измениться на: -
SELECT * FROM quiz_questions WHERE Levels = 'Level 1' Limit 1
Однако вышеизложенное может быть потенциальным SQL-инъекцией.
Использование: -
String levelID = Level.get(i);
String SELECT_TABLE_QUERY = "SELECT * FROM " + TABLE_NAME + " WHERE " + COLUMN_LEVEL + "=? Limit 1";
Cursor cursor = db.rawQuery(SELECT_TABLE_QUERY, new String[]{levelID });
устранит потенциал для SQL-инъекций и поэтому считается более правильным.
В качестве альтернативы вы можете использовать удобный метод запроса, который не только защищает от SQL-инъекций, но и генерирует большую частьSQL.
Таким образом, вы можете использовать: -
for (int i = 0; i < Level.size(); i++) {
Cursor cursor = db.query(TABLE_NAME,null,COLUMN_LEVEL + "=?",new String[]{Level.get(i)},null,null,null,"1");
while (cursor.moveToNext()) {
Question question = new Question();
question.setmLevels(cursor.getString(cursor.getColumnIndex(COLUMN_LEVEL)));
question.setmLevels_lockmanager(cursor.getInt(cursor.getColumnIndex(COLUMN_LEVEL_LOCKMANAGER)));
questionList.add(question);
}
cursor.close();
}
См. SQliteDatabase - запрос
Выше также используется более короткое значение while(cursor.moveToNext) { ..... }
для циклачерез Курсор (если строк нет, цикл не вводится, так как moveToNext вернет false, если перемещение не может быть выполнено)