Dificultad para actualizar la tabla SQlite

Tengo una aplicación en ejecución con una mesa de trabajo llamada ANIMAL. Al crear esta tabla por primera vez, consistía simplemente en las columnas _id y animal_name.

Ahora estoy tratando de ampliarlo, incluyendo una columna de biografía animal, sin embargo estoy teniendo un poco de dificultad. Al principio pensé que era sólo un caso de actualizar mi declaración CREATE_TABLE para incluir la bio animal:

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

Sin embargo, mirando el logcat me dice que la biografía de la columna no existe cuando se intenta insertar en ella.

Ahora, he intentado actualizar la base de datos usando el onUpgrade() e incluyendo el código

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

Pero esto no es resolver el problema tampoco. ¿Alguien tiene alguna sugerencia sobre cómo solucionar este problema?

Si está utilizando SQLiteOpenHelper es fácil actualizar una tabla. Es necesario implementar los métodos onCreate y onUpgrade y proporcionar la versión actual de su base de datos en el constructor de la clase. Al actualizar su tabla simplemente incremente el número de la versión de la base de datos, especifique una nueva consulta de creación de tablas en el método onCreate y ponga ALTER TABLE al método onUpgrade para actualizar la versión anterior de la tabla. Cuando Android detecta desajuste de la versión de la base de datos, llamará onUpgrade método onUpgrade automáticamente. Vea el ejemplo:

 public class OpenHelper extends SQLiteOpenHelper { private final static int DB_VERSION = 2; public TracksDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { final String CREATE_TBL = "create table " + ANIMALS_TABLE + " (_id integer primary key autoincrement, " + "animal_name text not null, " + "biography text not null);"; db.execSQL(CREATE_TBL); } @Override 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 actualización es la forma correcta de modificar las tablas sin perder datos de usuario, especialmente si la aplicación ya se había liberado al público.

  • Error al copiar la base de datos en Android, al ejecutar el programa en el emulador
  • Cómo almacenar datos desde un archivo XML a una base de datos SQLite en android
  • SQLite: No se puede enlazar argumento en el índice 1 porque el índice está fuera de rango. La sentencia tiene 0 parámetros
  • Error de SQLIte de Android: No se pudo leer la fila 0, col 1 de CursorWindow
  • Consultar tabla con subclases-como las relaciones
  • E / SQLiteLog: (10) No se pudo leer el archivo, obtuvo: 0, amt: 100, last Errno: 2
  • ¿Puedo descargar un db de SQLite en / sdcard y acceder desde mi aplicación Android?
  • La base de datos SQLite de Android está bloqueada
  • Obtener cadena, fecha, hora y int de sqlite base de datos en android
  • Custom SimpleCursorAdapter, consulta de base de datos y NullPointerException
  • Androide. ActiveJDBC es posible?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.