Dziękuję za przeczytanie i pomoc :)Jak zaktualizować tabelę z activeandroid po dodaniu nowej kolumny
Używam ActiveAndroid 3.0 - Android 2.2 - W mojej aplikacji mam model o nazwie „user”. początkowo stworzyłem tylko model z kolumnami/atrybutami (id, name, passcode), uruchomiłem aplikację na emulatorze i działało.
@Table(name = "user")
public class User extends Model {
@Column (name = "name")
public String name;
@Column (name = "pass_code")
public String passCode;
}
Następnie dodałem nową kolumnę/atrybut - profileImage. Uruchomiłem aplikację na emulatorze i mam SQLite column profileImage nie istnieje błąd.
@Table(name = "user")
public class User extends Model {
@Column (name = "name")
public String name;
@Column (name = "pass_code")
public String passCode;
@Column (name = "profile_image")
public String profileImage;
}
Próbowałem zmienić nazwę bazy danych ActiveAndroid i aktualizować właściwości wersji bazy danych w pliku manifestu.
<meta-data android:name="AA_DB_NAME" android:value="my_app.db" />
<meta-data android:name="AA_DB_VERSION" android:value="2" />
Ale nadal otrzymuję kolumna nie istnieje błąd.
ERROR AndroidRuntime Caused by: android.database.sqlite.SQLiteException:
no such column: profile_image: , while compiling: SELECT * FROM user WHERE profile_image = ?
Próbowałem również, un-instalowanie aplikacji z emulatora, ponowne uruchomienie emulatora, nazywając ActiveAndroid.cacheClear(). Jak dotąd nic z tego nie zadziałało.
Naprawdę doceniam każdą pomoc. dzięki.
dzięki za pomoc, bardzo doceniane. – dagger
Z ciekawości, czy nie powinno się usuwać aplikacji i jej ponowna instalacja zadziałała? A może usunięcie aplikacji nie powoduje usunięcia DB? –
@JoshPinter: Tak, odinstalowanie aplikacji powinno działać. W rzeczywistości uderzenie w "Clear Data" powinno również nastąpić. Nie jest to jednak rozwiązanie długoterminowe, ponieważ prawdopodobnie nie chcesz, aby użytkownicy Twojej aplikacji przechodzili przez ten proces. Prawidłowe podejście polega na zapewnieniu odpowiedniej logiki aktualizacji schematu. –