Pregunta sobre SQLite3 y actualización de la aplicación de iPhone

Considere el siguiente escenario.

Tengo una aplicación de iPhone en la tienda de aplicaciones que realiza consultas en una tabla SQLite3 de 16 columnas. Como actualización, quiero agregar una nueva columna a esta tabla.

Cuando alguien instala la actualización, ¿se equivocará? ¿Se replaceá la table? Como funciona esto. ¿Cómo debería manejar esto?

Solutions Collecting From Web of "Pregunta sobre SQLite3 y actualización de la aplicación de iPhone"

Una forma de hacerlo sería verificar en el momento del lanzamiento si la tabla tiene el nuevo campo. Puede usar el siguiente command SQLite para recuperar todos los campos de una tabla

PRAGMA table_info(table-name); 

Si el campo que está buscando no está en el set de resultados, ejecute un ALTER TABLE table-name ADD COLUMN column-name column-type para actualizar su tabla.

Puede usar este método para recorrer los campos de una tabla

 - (BOOL)getFields { const char *sql = "PRAGMA table_info(myTable)"; sqlite3_stmt *stmt; if (sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK) { return NO; } while(sqlite3_step(stmt) == SQLITE_ROW) { NSString *fieldName = [NSString stringWithUTF8String:(char *)sqlite3_column_text(stmt, 1)]; NSLog(@"%@", fieldName); } return YES; } 

Espero que esto ayude

FYI si nunca copió la database para que sea editable, será reemplazada. Si copió la database a un lugar que se puede escribir, entonces deberá encargarse de replacese usted mismo.