57 votes

Utilisation de l'instruction LIMIT dans une requête SQLite

J'ai une requête qui sélectionne les lignes dans un ListView sans avoir une limite. Mais maintenant que j'ai implémenté un SharedPreferences que l'utilisateur peut sélectionner combien de lignes seront affichées dans le ListView , ma requête SQLite ne fonctionne pas. Je passe l'argument de cette façon:

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

Aidez-moi, s'il vous plaît!

110voto

Mike Cialowicz Points 4490

La equals (=) opérateur n'est pas utilisé avec l' LIMIT de la clause. Le supprimer.

Voici un exemple LIMIT de la requête:

SELECT column FROM table ORDER BY somethingelse LIMIT 5, 10

Ou:

SELECT column FROM table ORDER BY somethingelse LIMIT 10

Jetez un coup d'oeil ici à l'SQLite sélectionnez la syntaxe: http://www.sqlite.org/syntaxdiagrams.html#select-stmt

Cette image est plutôt utile: http://www.sqlite.org/images/syntax/select-stmt.gif

4voto

Jon O Points 3545

Pour quiconque de tomber sur cette réponse vous cherchez un moyen d'utiliser un LIMIT clause avec un OFFSET,, je l'ai découvert à partir de ce bug que Android utilise les regex pour analyser la limite de la clause d'une requête:

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

Clause LIMIT est vérifié avec la suite sLimitPattern.

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

Notez que la regex n'acceptent le format offsetNumber,limitNumber , même si elle ne l'accepte pas l' OFFSET déclaration directement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X