2011-11-20 35 views
5

¿Es posible cambiar el nombre de una base de datos ya creada en android?Android cambiar el nombre de la base de datos SQLite

En la actualización de mis aplicaciones me gustaría cambiar el nombre de la base de datos anterior e instalar una nueva, luego comparar algunos valores y finalmente eliminar el anterior.

Estoy haciendo la creación desde un archivo sqlite en la carpeta de activos. Es por eso que no puedo cambiar el nombre de todas las tablas e insertar las nuevas.

Aclaración:

La antigua base de datos contendrá sólo una tabla que necesito para comparar los valores de en contra de la nueva base de datos (a partir de la actualización).

Ambas bases de datos se han copiado desde un archivo sqlite en la carpeta de activos.

Una vez que haya comparado un valor de la base de datos anterior a nuevo, eliminaré el anterior y usaré el nuevo en su lugar con los valores que comparé.

Lo que estaba pensando hacer era cambiar el nombre de la antigua crear la nueva en su lugar y hacer todo lo anterior.

+0

¿Por qué estás haciendo tanto de cosas ¿qué pasa si actualizar directamente la base de datos en el momento de la actualización de la aplicación? – user370305

Respuesta

3

Señor Flash es correcta, debe eliminar el viejo db y copiar la nueva ...

Suponiendo que se utiliza un SQLiteOpenHelper, podría utilizar un método createDatabaseIfRequired(); en getReadableDatabase() y getWritableDatabase()

private boolean checkOldDatabase() { 
    Log.d(Constants.LOGTAG, "OperationDbHelper.checkDatabase"); 
    File f = new File(DB_PATH + OLD_DB_NAME); 
    return f.exists(); 
} 

public void createDatabaseIfRequired() throws IOException, SQLiteException { 
    if (!checkOldDatabase()) { 
     // do db comparison/delete old db/copy new db 
    } 
} 
0

No se puede cambiar el nombre de una tabla SQL directamente.

Pero puede copiarlo creando uno nuevo y eliminando el anterior.

+0

Ah, eso suena perfecto, ¿podría proporcionar una muestra simple o un enlace a algo útil? La única otra cosa que necesito entender es cómo me conectaré con dos bases de datos a la vez para hacer algunas comparaciones. – Somk

7

Simplemente cambie el nombre del archivo. ¡Asegúrate de que la base de datos esté cerrada primero!

Call esto en su clase de actividad:

private void renameDatabase() 
{ 
    File databaseFile = getDatabasePath("yourdb.whatever"); 
    File oldDatabaseFile = new File(databaseFile.getParentFile(), "yourdb_old.whatever"); 

    databaseFile.renameTo(oldDatabaseFile); 
} 

respuesta a la aclaración. Cambie el nombre de la antigua base de datos (como se muestra arriba), copie la nueva desde la carpeta de activos, abra ambas bases de datos y realice su comparación. Luego borre el archivo anterior.

+0

¿por qué iba a cambiar el nombre del archivo? Estoy escribiendo la base de datos del archivo. Una vez escrito, nunca se usa nuevamente. – Somk

+1

De su pregunta: "¿Es posible cambiar el nombre de una base de datos ya creada en Android?" Eso significa renombrar el archivo, esencialmente. ¿Qué es lo que en realidad estás tratando de hacer? –

+0

Nuevamente, "... Me gustaría cambiar el nombre de la base de datos anterior e instalar una nueva ...". Sigo confundido. Eso es cambiar el nombre de un archivo. ¿Estás tratando de copiar una nueva TABLA? Pregunta diferente –

Cuestiones relacionadas