1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

SQL Fehler

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von quiddix, 19.05.2010.

  1. quiddix, 19.05.2010 #1
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    63
    Erhaltene Danke:
    1
    Registriert seit:
    09.02.2010
    Hallo,

    ich bekomme bei einem Update durch ContentValues die folgende Exception, wenn ich den Update Vorgang mit dem Debugger analysiere.

    Code:
    android.database.sqlite.SQLiteException: near ".": syntax error: , while compiling: UPDATE vokabel SET antwort=?, vokabel.karteifach_id=?, vokabel.phase_id=?, frage=?, fehlerquote=? WHERE _id=?
    folgendes wird dabei aufgerufen:

    Code:
    ContentValues werte = new ContentValues();
    
    			werte.put(VokabelTbl.FRAGE, editedVokabel.getFrage());
    			werte.put(VokabelTbl.ANTWORT, editedVokabel.getAntwort());
    			werte.put(VokabelTbl.FEHLERQUOTE, editedVokabel.getFehleranzahl());
    			werte.put(VokabelTbl.PHASE_ID, editedVokabel.getPhase().getId());
    			werte.put(VokabelTbl.KARTEIFACH_ID, editedVokabel.getKarteifach().getId());
    
    			db.update(VokabelTbl.TABLE_NAME, werte, "_id=?",
    					new String[] { editedVokabel.getId().toString() });
    und so sieht meine Tabelle aus:
    Code:
    String ID = "_id";
    	String FRAGE = "frage";
    	String ANTWORT = "antwort";
    	String FEHLERQUOTE = "fehlerquote";
    	String PHASE_ID = "vokabel.phase_id";
    	String KARTEIFACH_ID = "vokabel.karteifach_id";
    
    	String TABLE_NAME = "vokabel";
    
    	String SQL_CREATE = "CREATE TABLE IF NOT EXISTS vokabel ( "
    			+ " _id INTEGER PRIMARY KEY AUTOINCREMENT,"
    			+ " frage TEXT NOT NULL," + " antwort TEXT NOT NULL,"
    			+ " fehlerquote INTEGER NOT NULL," + " phase_id INTEGER NOT NULL,"
    			+ " karteifach_id INTEGER NOT NULL)";
    Kann mir jemand den Fehler sagen ich finde hier einfach kein Fehler, vorallem nicht near "."???
     
  2. Fr4gg0r, 19.05.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Vielleicht dürfen Spaltennamen keinen "." einthalten?

     
  3. swordi, 19.05.2010 #3
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    das meint er nicht als spaltenname

    eventuell musst du da einen alias verwenden

    UPDATE vokabel AS v SET antwort=?, v.karteifach_id=?, v.phase_id=?, frage=?, fehlerquote=? WHERE _id=?
     
  4. quiddix, 19.05.2010 #4
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    63
    Erhaltene Danke:
    1
    Registriert seit:
    09.02.2010
    Hi,

    du hattest recht ich habe die Punkte entfernt, und danach war der Fehler weg. Ich hatte mir das irgendwie angewöhnt, dass ich für Relationen auf andere Tabellen den Namen der eigenen Tabelle voranstelle. Das wird bei normalem SQL-Befehl auch richtig interpretiert also [Tabellenname].[Spaltenname]. Offensichtlich verhaspelt sich jedoch db.update() hier. Deshalb habe ich nun einfach das ganze nur noch als [Spaltenname].

    Ich denke das mit dem Alias würde so nicht funktionieren, da der SQL Code ja beim Benutzen von ContentValues automatisch generiert wird. Falls ich hier falsch liege bitte verbessern, dann lerne ich schon wieder was dazu.

    Danke aufjedenfall an euch beide, das Problem ist gelöst :)
     
  5. swordi, 19.05.2010 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    das würde heißen ich könnte nie ein update machen, welches 2 tabellen braucht, die zufällig gleiche spaltennamen haben.

    glaub nicht, dass es so eingeschränkt ist.
     

Diese Seite empfehlen