2016-02-26 2 views
-1

Est-ce une déclaration commePuis-je utiliser LIMIT dans SQLite3 ensemble comme un paramètre lié?

SELECT Name FROM Persons WHERE Name LIKE ?1 LIMIT ?2 

possible SQLite3? Pour ?1 je peux lier un paramètre après la préparation de l'instruction, en utilisant https://www.sqlite.org/c3ref/bind_blob.html. Mais est-ce aussi possible pour ?2? Je ne pouvais pas le faire fonctionner et maintenant je crains que je dois créer une déclaration séparée pour chaque valeur de LIMIT, disons 1, 10, 100, 1000, etc.

+0

Non Vous devez le passer en concaténant la chaîne: '" ... WHERE Nom LIKE? LIMIT "+ YourLimit.toString();' –

+1

Quel est le problème? Un message d'erreur? –

+0

@ HrundiV.Bakshi Mauvais. La clause limit est une expression, donc un paramètre de requête peut en faire partie. –

Répondre

0

La réponse est oui. Cela fonctionne pour? 2 de la même manière que pour? 1.

int iReturn = sqlite3_bind_text(pStmt, index, acValue, -1, SQLITE_TRANSIENT); 

Pour limite, index est 2 et acValue est une chaîne qui évalue à un nombre entier. Je recommande de définir SQLITE_TRANSIENT afin que SQLite fasse une copie de acValue. Sinon, il faut s'assurer que acValue ne sort pas de la portée.