Je suis en train de construire une chaîne dans Cocoa pour l'utiliser comme une instruction SQL qui sera passée dans les wrappers FMDB pour sqlite; Cependant, la base de données craps avec un échec BAD_ACCESS. J'ai le code suivant:Utilisation de guillemets simples lors de la construction d'une chaîne dans Cocoa
préfixe = @ "SELECT * FROM Table WHERE Champ1 LIKE '%";
middle = @ "% 'OU Field2 LIKE'%";
suffixe = @ "% 'ORDERY BY";
orderby = «% 'ORDER BY Fieldnames»; SqlStatement = [NSString stringWithFormat: @ "% @% @% @% @% @% @", préfixe, searchString, milieu, searchString, suffixe, orderby];
Lors de l'exécution instructionSQL finit contenant quelque chose comme ce qui suit:
SELECT * FROM table où Champ1 comme \ '% A% \' OR Champ2 comme \ '% A% \' ORDER BY Noms des champs
Pour une raison quelconque, un \ est ajouté dans la chaîne qui provoque la bombe de la base de données.
Des idées comment je peux garder le \ d'apparaître dans ma chaîne?
MISE À JOUR: Quand je sortie ma variable via NSLog j'obtiens ce qui suit: SELECT * FROM table où Champ1 LIKE 'OX1.87A8013DBD18F-1027' OU Champ2 LIKE « OX1.87A8013DBD18F-1027'ORDER PAR Fieldname.
Le problème semble être lié à l'utilisation de% A dans la chaîne. Même si je code dur la variable sqlStatement pour inclure '% A%' le% A semble être converti en une adresse mémoire ou quelque chose. Si je fais '% ABAP%', j'obtiens la sortie comme 'OX1.87A8013DBD18F-1027BAP'. Notez que je perds le signe%.
Quelle base de données ciblez-vous? – jonnii
S'il vous plaît modifier le message original au code de format correctement. –
Vous avez besoin d'utiliser des paramètres. Voir mon message. – jonnii