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:
Und in LogCat:
%Vor%Also die Spalte existiert.
Ich habe eine merkwürdige Lösung gefunden. In Code%. Sie müssen tun:
%Vor%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.
Tags und Links java android sqlite android-contentprovider illegalargumentexception