1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. quiddix, 19.05.2010 #1
    quiddix

    quiddix Threadstarter Android-Hilfe.de Mitglied

    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)

    Vielleicht dürfen Spaltennamen keinen "." einthalten?

     
  3. swordi, 19.05.2010 #3
    swordi

    swordi Gewerbliches Mitglied

    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

    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

    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.
     
Du betrachtest das Thema "SQL Fehler" im Forum "Android App Entwicklung",