9
votes

Comment puis-je insérer double citation (") dans le champ de la base de données SQLite VARCHAR?

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\"", ... 


0 commentaires

5 Réponses :


1
votes

Essayez ceci:

INSERT OR IGNORE INTO EXAMPLETABLE VALUES ('1-Preludi "Obrint Pas 2011"', ... 


2 commentaires

+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.



3
votes

Pour insérer des valeurs dans une base de données, vous devez toujours utiliser SQLITESTUMENTATION ( HOWTO ) comme ils s'échappent Vos valeurs et empêchent votre application de cibler avec SQL-injections .

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.


4 commentaires

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 . 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.



2
votes

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);


0 commentaires

2
votes

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);


0 commentaires

17
votes

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 xxx


0 commentaires