Comment utiliser l'instruction Sqlite3 COMME
-
27-09-2019 - |
Question
J'ai des problèmes en cours d'exécution d'une dynamique déclaration comme dans mon projet: cette requête fonctionne comme un charme et renvoie tous les éléments avec « t » dans leur nom:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%t%%'";
Quand j'essaie de le faire de façon dynamique, je ne reçois pas d'erreurs, mais juste un résultat vide. Il semble que la valeur est nulle. J'essaie de lier une valeur de chaîne « s » qui délivre une valeur correcte
NSLog(@"bbc_ : search menu items from db based on: %@",s);
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [s UTF8String],-1,SQLITE_TRANSIENT);
Comment cette valeur dois-je lier au lieu d'utiliser:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
La solution
Juste trouvé une bonne explication à http://www.innerexception.com/2008/10/using-like-statement-in-sqlite-3-from.html
I lignes modifiées suivant:
const char *sql = "select * from bbc_ipad_v1_node where name LIKE ?001";
et
NSString *searchInput = [NSString stringWithFormat:@"%@%%", s];
sqlite3_bind_text(statement, 1, [searchInput UTF8String],-1,SQLITE_TRANSIENT);
Autres conseils
Vous pouvez réellement dire simplement
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%t%'";
(Notez les mono-%
s)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow