Wie man die Tabelle mit activeandroid nach dem Hinzufügen einer neuen Spalte aktualisiert

7

Danke fürs Lesen und Helfen:)

Ich verwende ActiveAndroid 3.0 - Android 2.2 - In meiner App habe ich ein Modell namens "Benutzer". Anfangs habe ich nur das Modell mit (ID, Name, Passcode) Spalten / Attributen erstellt, ich habe die App auf dem Emulator ausgeführt und es hat funktioniert.

%Vor%

Dann habe ich eine neue Spalte / Attribut hinzugefügt - profileImage. Ich lief die App auf dem Emulator und ich bekam SQLite Spalte profileImage existiert nicht Fehler.

%Vor%

Ich habe versucht, den ActiveAndroid-Datenbanknamen zu ändern und die Eigenschaften der Datenbankversion in der Manifestdatei zu aktualisieren.

%Vor%

Aber ich bekomme immer die Spalte existiert nicht Fehler.

%Vor%

Ich habe auch versucht, die App vom Emulator zu entfernen, den Emulator neu zu starten und ActiveAndroid.cacheClear () aufzurufen. Bisher hat das alles nicht funktioniert.

Ich schätze jede Hilfe sehr. Danke.

    
dagger 29.06.2013, 22:59
quelle

2 Antworten

19

Von den Geräuschen fehlt Ihnen das Upgrade-Skript, um Ihre user -Tabelle in das neue Schema zu migrieren. Die Upgrade-Skripte enthalten im Wesentlichen die Anweisungen, wie vom alten Zustand der Datenbank auf den neuen zugegriffen werden kann. In Ihrem speziellen Fall möchten Sie SQLite mitteilen, dass es der vorhandenen Benutzertabelle eine neue Spalte, profile_image , hinzufügen soll.

Um die Datenbank von Schema 1 auf 2 zu aktualisieren, erhöhen Sie den Wert AA_DB_VERSION auf 2 und geben Sie dem Upgrade-Skript den Namen 2.sql . Speichern Sie die Datei unter assets/migrations und geben Sie ihr folgenden Inhalt:

%Vor%

Die Skripte können einen Satz von SQL-Anweisungen enthalten, die von SQLiteDatabase bis execSQL(...) .

Weitere Informationen zu Schema-Migrationen mit Active Android finden Sie in dem Wiki auf der GitHub-Projektseite .

    
MH. 30.06.2013, 01:14
quelle
1

Das Label " TEXT " wird für die Datenbankmigration mit VARCHAR

in " ActiveAndroid " geändert

Alle anderen reservierten Wörter wurden hervorgehoben mit Ausnahme von " TEXT ". Ich habe " VARCHAR " benutzt und es hat funktioniert.

    
Zeerak Hameem 19.02.2017 20:36
quelle