SQL-Werte mit Hochkommas

F

FireRider

Neues Mitglied
6
Hallo Leute

In meiner App verwende ich eine SQLite Datenbank, in die jeweiligen Tabellen werden Eingaben die vom Benutzer kommen gespeichert.
Funktioniert alles wunderbar, allerdings hat mir ein Freund gestern gesagt ich solle mal irgendwo ein Hochkomme (also ein ' ) eingeben und siehe da, ein FC.
Weiss jemand wie ich diesen Error abfangen kann? Ist es möglich das ' in die Spalten zu schreiben oder soll ich den Benutzer darauf aufmerksam machen dass das nicht möglich ist?

Danke und Gruss, FireRider

PS: Gibt es noch mehr solche Zeichen, die zu FC's führen?. Habe gerade noch ein paar getestet, bis auf ' gingen alle (z.B. & " - ...)
 
mach einfach beim insert

DatabaseUtils.sqlEscapeString(DEIN_STRING);

damit gehts
 
Danke für die Antwort.
Hat mir leider nicht geholfen, habe immer noch den gleichen Fehler.
 
Wie erzeugst Du denn den Insert / Update - Befehl? Hast Du es schon mal mit Paramentern versucht?
 
FireRider schrieb:
Danke für die Antwort.
Hat mir leider nicht geholfen, habe immer noch den gleichen Fehler.



zeig mal den code, wenn ich dein problem richtig verstanden habe, gehts ganz sicher so, wie ich es geschrieben habe.
 
Mein Insert-Befehl sieht so aus:
Code:
myDB.execSQL("INSERT INTO " + TABLE_NAME + " (titel, datum, zeit) VALUES ('" + titel + "','" + datum + "','" + zeit + "'););
So hat es mit EscapeString ausgesehen (Habe es da vorerst nur mit dem Titel getestet):
Code:
myDB.execSQL("INSERT INTO " + TABLE_NAME + " (titel, datum, zeit) VALUES ('" + DatabaseUtils.sqlEscapeString(titel) + "','" + datum + "','" + zeit + "'););

Die Spalten sind allesamt VARCHAR und die Werte die ich einfülle sind Strings.
 
Dann versuch es doch mal mit "Prepared Statements":
Code:
SQLiteStatement stmt = myDB.compileStatement("INSERT INTO " + TABLE_NAME + " (titel) VALUES (?)";);
stmt.bindString(1, "Text mit 'Hochkomma'");
stmt.execute();
 
Danke, damit klappt es!
 
FireRider schrieb:
Mein Insert-Befehl sieht so aus:
Code:
myDB.execSQL("INSERT INTO " + TABLE_NAME + " (titel, datum, zeit) VALUES ('" + titel + "','" + datum + "','" + zeit + "'););
So hat es mit EscapeString ausgesehen (Habe es da vorerst nur mit dem Titel getestet):
Code:
myDB.execSQL("INSERT INTO " + TABLE_NAME + " (titel, datum, zeit) VALUES ('" + DatabaseUtils.sqlEscapeString(titel) + "','" + datum + "','" + zeit + "'););

Die Spalten sind allesamt VARCHAR und die Werte die ich einfülle sind Strings.

du machst ein sqlescapestring und trotzdem ' drum herum. dann ist es auch kein wunder das es nicht klappt ;)
 

Ähnliche Themen

M
  • mafoma63
Antworten
2
Aufrufe
739
swa00
swa00
5
Antworten
22
Aufrufe
1.367
590239
5
B
Antworten
3
Aufrufe
1.286
swa00
swa00
Zurück
Oben Unten