SQL Fehler

Q

quiddix

Ambitioniertes Mitglied
1
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 "."???
 
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=?
 
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 :)
 
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.
 

Ähnliche Themen

M
  • mafoma63
Antworten
2
Aufrufe
762
swa00
swa00
B
Antworten
3
Aufrufe
1.308
swa00
swa00
R
Antworten
6
Aufrufe
1.016
swa00
swa00
Zurück
Oben Unten