J'essaie d'insérer dans une table avec ce champ Titre Varchar (200) Non NULL CODE> La phrase suivante: INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi \"Obrint Pas 2011\"", ...
5 Réponses :
Essayez ceci:
INSERT OR IGNORE INTO EXAMPLETABLE VALUES ('1-Preludi "Obrint Pas 2011"', ...
+1 J'ai essayé mais j'ai des problèmes avec ': D, alors cette solution ne fonctionne pas, mais sa solution facile si vous n'avez que des problèmes de ".
Si vos entrées ont des citations simples / doubles mixtes, cela se brisera.
Pour insérer des valeurs dans une base de données, vous devez toujours utiliser SQLITESTUMENTATION a> ( HOWTO ) comme ils s'échappent Vos valeurs et empêchent votre application de cibler avec SQL-injections . P>
En outre, si vous insérez plusieurs valeurs (disons dans une boucle), l'exécution d'une instruction précompilée avec différentes valeurs liées est beaucoup plus rapide qu'une instruction insertion normale. P>
En réalité, vous devez utiliser l'interface SQLITE fournie notamment par Android et transmettre les valeurs en tant que contenuValues de contenu, en utilisant (par exemple) la méthode SQLITEDATABASE # INSERT (String, String, ContentValues).
@Jens Vous avez raison, dans Android, les paramètres inserts sont échappés. Mais la plupart des gens ne fournissent que la requête brute et laissent les paramètres avec null code>. C'est pourquoi je suggère une estabilité normale.
Ah, vous vous référez à utiliser SQLITESTUMENT: S, non réel Java Standard PreyStatifs.
@ Jens Yep, j'allais, mais j'ai eu la mauvaise classe des docs. Mon erreur.
Essayez quelque chose de similaire:
ContentValues values = new ContentValues();
values.put("YOURCOLUMNNAME", "1-Preludi \"Obrint Pas 2011\"");
// ... other stuff you want to insert ...
SQLiteDatabase db = ... ; // Usually obtained using a SQLiteOpenHelper
long id = db.insertWithOnConflict("EXAMPLETABLE", BaseColumns._ID, values, SQLiteDatabase.CONFLICT_IGNORE);
Utilisez ceci pour insérer des données avec n'importe quel caractère spécial
ContentValues initialValues = new ContentValues();
initialValues.put("Id", id);
initialValues.put("Name", Name);
// ...
myDataBase.insert("EXAMPLETABLE", null, initialValues);
Travailler avec SQLite et direct SQL Insérer des commandes à partir de la ligne de commande, je trouve que la double citation s'échappe elle-même.
Avec votre exemple