SQLite Unterschiede zwischen Android 2.1 und 2.2

8

Ich habe eine Android-App, und alle meine Tests waren bisher auf meinem Froyo-Handy. Ich habe gerade mit dem Testen gegen 1.6 und 2.1 im Emulator begonnen, und es stürzt beim Start ab. Es kann keine Spalte in einer meiner Ansichten finden.

%Vor%

Das Schema der Ansicht ist wie folgt:

%Vor%

Wenn adb shell eine Verbindung zu den verschiedenen Emulatorinstanzen herstellt, habe ich bestätigt, dass (1) das korrekte Schema in allen Fällen vorhanden ist und (2) in 1.6 und 2.1, SQLite kann die Spalten in diesem Verzeichnis nicht finden Ansicht, sogar mit etwas so einfach wie

%Vor%

oder

%Vor%

Es funktioniert gut auf 2.2.

Meine Vermutung ist also, dass sich in SQLite zwischen Android 2.1 und 2.2 etwas geändert hat. Diese Antwort gibt hilfreich die SQLite-Versionen, die mit jedem geliefert wurden Android-API-Ebene Es besagt, dass SQLite von 3.5.9 auf 3.6.22 zwischen 2.1 und 2.2 aktualisiert wurde. Beim Betrachten der SQLite-Versionsgeschichte sehe ich nichts besonders Offensichtliches, was den Unterschied erklären könnte.

Kann jemand genau herausfinden, was sich geändert hat, und vorschlagen, wie ich es umgehen kann, damit mein Code auf Pre-Froyo-Geräten funktioniert?

    
Graham Borland 18.05.2011, 19:54
quelle

4 Antworten

2

Ich habe genau das gleiche Problem in meiner App. Der gemeinsame Nenner ist, dass ich auch Ansichten verwende und Fremdschlüssel habe.

Ich habe meine Datenbank vom Emulator heruntergeladen. Ich habe keine Probleme, die Abfrage außerhalb des Android OS 2.1 auszuführen.

Habe die Antwort von mp2526 gegeben, aber die Abfrage mit "columnx AS columnx" machte keinen Unterschied. Ich werde versuchen, das Problem zu isolieren.

    
Magnus 26.05.2011, 20:14
quelle
7

Ich habe bei der Verwendung von DISTINCT auf ein Problem mit SQLite gestoßen, bei dem es sich um das gleiche Problem handelt, mit dem Sie SUM umgehen.

Bei früheren Betriebssystemversionen musste ich bei der Verwendung von DISTINCT die Spaltennamen aliasieren oder die Logik würde mit einem ähnlichen, wenn nicht genau dem gleichen Fehler fehlschlagen (ich erinnere mich nicht genau, was der Fehler war), aber ich vermute, dass sie behoben wurden es in späteren OS-Versionen.

Beispiel

%Vor%

funktioniert für alle Betriebssystemversionen während

%Vor%

würde bei früheren Betriebssystemen fehlschlagen

    
mp2526 18.05.2011 22:37
quelle
0

Ich bin gerade auf dasselbe Problem gestoßen. Es funktioniert, wenn ich wieder Deklaration mit Spalten AS-Spalten Notationen anzeigen.

    
katit 14.06.2011 00:15
quelle
0

Das Problem ist, dass Android 2.1 die Spalten zusammen mit ihren Tabellennamen zurückgibt, also eine Abfrage wie

%Vor%

gibt eine Spalte mit dem Namen table.id

zurück

Die Lösung ist, wie schon erwähnt,

zu schreiben %Vor%     
user3866289 22.07.2014 20:35
quelle

Tags und Links