IllegalArgumentException: Ungültige Spalte

8

Hier ist das Logcat:

%Vor%

Die dazugehörige Zeile lautet:

%Vor%

Was könnte das Problem sein? Die Datenbank ist einfach erstellt. Gibt es noch einen anderen Code, den Sie sehen müssen?

UPDATE:
Ich bin sehr sicher, dass diese Spalte existiert. Ich habe die Datenbank damit abgefragt:

%Vor%

Und in LogCat:

%Vor%

Also die Spalte existiert.

    
Mohit Deshpande 15.01.2011, 21:17
quelle

3 Antworten

7

Ich habe eine merkwürdige Lösung gefunden. In Code%. Sie müssen tun:

%Vor%     
Mohit Deshpande 15.01.2011, 22:19
quelle
17

Die Spalte existiert zweifellos in Ihrer Datenbank, aber wenn Sie die Spalte nicht zu einer sogenannten Projektionskarte hinzugefügt haben, erhalten Sie den Fehler "ungültige Spalte", den Sie sehen . Sie können die Projektionskarte über ein Query Builder-Objekt wie folgt hinzufügen:

%Vor%

Um zu verstehen, was passiert, suchen Sie in der Quelle der SQLiteQueryBuilder-Klasse nach und Sie werden Folgendes sehen:

%Vor%

Im Grunde überprüft es die Spalten, die Sie in Ihrer Projektion angefordert haben, mit einer Liste von "erlaubten" Spalten. Wenn die Karte nicht die Spalte Ihrer Projektion enthält, wird eine IllegalArgumentException ausgelöst, genau wie Sie gesehen haben. (Ich stelle mir vor, dass diese Überprüfung mit der Karte eine Sicherheitsfunktion ist, um SQL-basierte Angriffe von Personen zu verhindern, die Ihren Inhaltsanbieter missbrauchen, aber das ist nur eine Vermutung.)

Beachten Sie auch, dass Sie in Ihrem Abfrage-Generator "strikte" Projektionspläne festlegen:

%Vor%

Dann erwartet es in diesem Fall, dass Sie die genauen Spaltennamen kennen ... Wenn Sie es nicht setzen, sucht es nach dem Spaltenalias "AS" - ich denke, das erklärt die "seltsame Korrektur", die Sie entdeckt haben.

Hoffe, das hilft.

    
DMH 21.07.2011 20:29
quelle
0

Haben Sie diese Spalte in der Projektionstabelle des Inhaltsanbieters relativ zur Tabelle mit dieser Spalte hinzugefügt? Ich hoffe, das hilft.

    
Paco 10.02.2011 15:20
quelle