2011-10-04 15 views
5

Sto cercando di inserire in una tabella con questo campo TITLE varchar(200) NOT NULL la frase successiva:?Come posso inserire virgolette (") in SQLite database campo varchar

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

Il problema è che SQLite missunderstand il \ "escape caracter, e non so come metterlo per risolvere il problema (forse un codice di carattere?) nel mio programma Android.

risposta

3

per inserire i valori in un database si dovrebbe sempre usare SQLiteStatement (HowTo) come sfuggono i vostri valori e prevenire la vostra applicazione di essere bersagliato con SQL-Injections.

Inoltre, se si inseriscono più valori (ad esempio in un ciclo), l'esecuzione di un'istruzione precompilata con diversi valori associati è molto più rapida di una normale istruzione di inserimento.

+1

In realtà, si dovrebbe usare l'interfaccia SQLite fornita in particolare da Android e passa invece i valori come ContentValues, usando (per esempio) il metodo SQLiteDatabase # insert (String, String, ContentValues) – Jens

+1

@Jens Hai ragione, in Android i parametri insert sono sfuggiti. Ma la maggior parte delle persone fornisce solo la query raw e lascia i parametri con 'Null'. Ecco perché suggerisco un normale PreparedStatement. –

+1

Ah, ti stai riferendo ad usare SQLiteStatement: s, non gli attuali Java PreparedStatements standard – Jens

1

Prova questo:

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

+1 ho provato ma ho problemi con il ':. D, allora questa soluzione non correre, ma la sua facile uno se hai solo problemi con " –

2

Prova qualcosa di simile:

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

Spiacente, questo non è il modo che voglio. Ma comunque –

2

usare per inserire i dati con qualsiasi charecter speciale

ContentValues initialValues = new ContentValues(); 
initialValues.put("Id", id); 
initialValues.put("Name", Name); 
// ... 
myDataBase.insert("EXAMPLETABLE", null, initialValues); 
9

Basta lavorare con i comandi SQLite e SQL INSERT diretta dalla riga di comando, trovo che la doppia citando sfugge a se stesso. Con il vostro esempio

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