Utilizar la instrucción LIMIT en una consulta SQLite

Tengo una pregunta que selecciona filas en un ListView sin tener un límite. Pero ahora que he implementado SharedPreferences que el usuario puede seleccionar la cantidad de filas que se mostrarán en el ListView , mi consulta SQLite no funciona. Estoy pasando el argumento de esta manera:

 return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, "LIMIT='" + limite + "'"); 

El operador igual ( = ) no se utiliza con la cláusula LIMIT . Quítelo.

He aquí un ejemplo de consulta LIMIT :

 SELECT column FROM table ORDER BY somethingelse LIMIT 5, 10 

O:

 SELECT column FROM table ORDER BY somethingelse LIMIT 10 

En su caso, la declaración correcta sería:

 return wDb.query(TABELANOME, new String[] {IDTIT, TAREFATIT, SUMARIOTIT}, CONCLUIDOTIT + "=1", null, null, null, null, String.valueOf(limite)); 

Echa un vistazo aquí a la sintaxis SQLite select: http://www.sqlite.org/syntaxdiagrams.html#select-stmt

Esta imagen es bastante útil: http://www.sqlite.org/images/syntax/select-stmt.gif

Para cualquiera que se tropieza con esta respuesta buscando una forma de usar una cláusula LIMIT con OFFSET , descubrí de este error que Android utiliza la siguiente expresión regular para analizar la cláusula límite de una consulta:

Desde <framework/base/core/java/android/database/sqlite/SQLiteQueryBuilder.java>

LIMIT se comprueba con el siguiente sLimitPattern.

 private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?"); 

Tenga en cuenta que el regex acepta el formato offsetNumber,limitNumber aunque no acepta la sentencia OFFSET directamente.

Debido a este error que tampoco permite límites negativos

8, -1

Tuve que utilizar esta solución

 SQLiteQueryBuilder builder = new SQLiteQueryBuilder(); builder.setTables(table); String query = builder.buildQuery(projection, selection, null, null, null, sortOrder, null); query+=" LIMIT 8,-1"; 
  • ¿Cómo carga todos los campos de una base de datos y ordeno el resultado después de una fila con GreenDao?
  • Android sqlite eliminar consulta no funciona
  • Tamaño máximo de Android Cursor
  • ¿Cuándo debo realizar ciertas operaciones SQLite en otro subproceso (no en el subproceso principal)?
  • Obtención de una excepción SQLiteCantOpenDatabaseException
  • Rendimiento de SQLite de Android en consultas complejas
  • Calcular la distancia entre dos puntos directamente en SQLite
  • No se pueden actualizar varias filas en el comando de actualización de la base de datos Sqlite en android
  • SQLite ExecSql no funciona desde el archivo
  • SQLiteDatabase - ¿Cómo utilizar la cláusula where?
  • Los datos se rellenan de la fecha de una tabla en particular en lugar de toda la tabla en sqlite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.