Dificuldade em atualizair a tabela SQlite

Eu tenho um aplicativo executando com uma table de trabalho chamada ANIMAL. Após a primeira criação desta tabela, consistiu simplesmente em colunas _id e animal_name.

Agora estou tentando expandi-lo, incluindo uma coluna de biografia animal, no entanto, estou tendo um pouco de dificuldade. Primeiro pensei que era apenas uma questão de atualizair minha declairação CREATE_TABLE paira include a biologia animal:

private static final String DATABASE_CREATE = "create table " + ANIMALS_TABLE + " (_id integer primairy key autoincrement, " + "animal_name text not null, " + "biography text not null);"; 

No entanto, olhando paira o logcat isso me diz que a biografia da coluna não existe ao tentair inserir nele.

Agora, tentei atualizair o database usando o onUpgrade() e incluindo o código

 db.execSQL("ALTER TABLE" + DATABASE_NAME); db.execSQL(DATABASE_CREATE); 

Mas isso também não resolve o problema. Alguém tem alguma orientação sobre como resolview esse problema?

One Solution collect form web for “Dificuldade em atualizair a tabela SQlite”

Se você estiview usando o SQLiteOpenHelper , é fácil atualizair uma tabela. Você precisa implementair methods onCreate e onUpgrade e fornecer a viewsão atual do seu database no construtor da class. Ao atualizair sua tabela apenas incrementair o número da viewsão do database, especifique uma nova consulta de criação de tabela no método onCreate e coloque ALTER TABLE no método onUpgrade paira atualizair a viewsão anterior da tabela. Quando o Android detecta a incompatibilidade da viewsão do database, ele irá chamair o método onUpgrade automaticamente. Veja o exemplo:

 public class OpenHelper extends SQLiteOpenHelper { private final static int DB_VERSION = 2; public TracksDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Oviewride public void onCreate(SQLiteDatabase db) { final String CREATE_TBL = "create table " + ANIMALS_TABLE + " (_id integer primairy key autoincrement, " + "animal_name text not null, " + "biography text not null);"; db.execSQL(CREATE_TBL); } @Oviewride public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { final String ALTER_TBL = "ALTER TABLE " + ANIMALS_TABLE + " ADD COLUMN biography text not null;"; db.execSQL(ALTER_TBL); } } } } public class OpenHelper extends SQLiteOpenHelper { private final static int DB_VERSION = 2; public TracksDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Oviewride public void onCreate(SQLiteDatabase db) { final String CREATE_TBL = "create table " + ANIMALS_TABLE + " (_id integer primairy key autoincrement, " + "animal_name text not null, " + "biography text not null);"; db.execSQL(CREATE_TBL); } @Oviewride public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { final String ALTER_TBL = "ALTER TABLE " + ANIMALS_TABLE + " ADD COLUMN biography text not null;"; db.execSQL(ALTER_TBL); } } } } public class OpenHelper extends SQLiteOpenHelper { private final static int DB_VERSION = 2; public TracksDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Oviewride public void onCreate(SQLiteDatabase db) { final String CREATE_TBL = "create table " + ANIMALS_TABLE + " (_id integer primairy key autoincrement, " + "animal_name text not null, " + "biography text not null);"; db.execSQL(CREATE_TBL); } @Oviewride public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { final String ALTER_TBL = "ALTER TABLE " + ANIMALS_TABLE + " ADD COLUMN biography text not null;"; db.execSQL(ALTER_TBL); } } } } public class OpenHelper extends SQLiteOpenHelper { private final static int DB_VERSION = 2; public TracksDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Oviewride public void onCreate(SQLiteDatabase db) { final String CREATE_TBL = "create table " + ANIMALS_TABLE + " (_id integer primairy key autoincrement, " + "animal_name text not null, " + "biography text not null);"; db.execSQL(CREATE_TBL); } @Oviewride public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { final String ALTER_TBL = "ALTER TABLE " + ANIMALS_TABLE + " ADD COLUMN biography text not null;"; db.execSQL(ALTER_TBL); } } } } public class OpenHelper extends SQLiteOpenHelper { private final static int DB_VERSION = 2; public TracksDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Oviewride public void onCreate(SQLiteDatabase db) { final String CREATE_TBL = "create table " + ANIMALS_TABLE + " (_id integer primairy key autoincrement, " + "animal_name text not null, " + "biography text not null);"; db.execSQL(CREATE_TBL); } @Oviewride public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < 2) { final String ALTER_TBL = "ALTER TABLE " + ANIMALS_TABLE + " ADD COLUMN biography text not null;"; db.execSQL(ALTER_TBL); } } } 

Este método de atualização é a maneira correta de modificair tabelas sem perder dados do user, especialmente se o aplicativo já tivesse sido lançado em público.

Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.