SQL-Werte mit Hochkommas

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von FireRider, 14.01.2011.

  1. FireRider, 14.01.2011 #1
    FireRider

    FireRider Threadstarter Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    27.09.2010
    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. & " - ...)
     
  2. swordi, 14.01.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    mach einfach beim insert

    DatabaseUtils.sqlEscapeString(DEIN_STRING);

    damit gehts
     
  3. FireRider, 14.01.2011 #3
    FireRider

    FireRider Threadstarter Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    27.09.2010
    Danke für die Antwort.
    Hat mir leider nicht geholfen, habe immer noch den gleichen Fehler.
     
  4. realgun, 15.01.2011 #4
    realgun

    realgun Android-Hilfe.de Mitglied

    Beiträge:
    94
    Erhaltene Danke:
    3
    Registriert seit:
    14.04.2010
    Wie erzeugst Du denn den Insert / Update - Befehl? Hast Du es schon mal mit Paramentern versucht?
     
  5. swordi, 15.01.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009


    zeig mal den code, wenn ich dein problem richtig verstanden habe, gehts ganz sicher so, wie ich es geschrieben habe.
     
  6. FireRider, 15.01.2011 #6
    FireRider

    FireRider Threadstarter Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    27.09.2010
    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.
     
  7. realgun, 15.01.2011 #7
    realgun

    realgun Android-Hilfe.de Mitglied

    Beiträge:
    94
    Erhaltene Danke:
    3
    Registriert seit:
    14.04.2010
    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();
    
     
  8. FireRider, 15.01.2011 #8
    FireRider

    FireRider Threadstarter Junior Mitglied

    Beiträge:
    38
    Erhaltene Danke:
    6
    Registriert seit:
    27.09.2010
    Danke, damit klappt es!
     
  9. swordi, 15.01.2011 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    du machst ein sqlescapestring und trotzdem ' drum herum. dann ist es auch kein wunder das es nicht klappt ;)
     

Diese Seite empfehlen