2012-02-16 19 views

Respuesta

17

@ La respuesta de Julia funcionará bien. ORMLite también admite un TableUtils.clearTable() method call que elimina todas las filas de una tabla:

Eso no borrará una base de datos, pero puede borrar cada tabla una por una. Algo como lo siguiente:

TableUtils.clearTable (getConnectionSource(), YourClassHere.class);

Editar:

@ max4ever señaló que context.deleteDatabase(...) es mucho más rápido que otras formas de limpieza de una base de datos. Pero esta llamada eliminará las definiciones de la tabla, mientras que TableUtils.clearTable(...) deja el esquema intacto.

+0

gracias funcionó –

+2

esto es dolorosamente lento, tarda unos 30 segundos en 10 tablas, context.deleteDatabase es instantánea – max4ever

+0

@Gray 'context.deleteDatabase (...)' borra todos los datos de la base de datos y esta es la diferencia con 'TableUtils.clearTable' ¿está bien? –

5

Puede llamar

context.deleteDatabase(DATABASE_NAME); 

en su clase DatabaseHelper que se extiende OrmLiteSqliteOpenHelper. context se pasa a la clase DatabaseHelper en el constructor.

La próxima vez que se necesita la base de datos, se recrea y

@Override 
public void onCreate(SQLiteDatabase sqliteDatabase, ConnectionSource connectionSource) 

se llama.

+0

gracias julia –

+3

si uso esto, entonces ormLite no ve los cambios y tengo que matar y volver a abrir la aplicación para que vea, ¿hay alguna manera de forzar ormLite para actualizar y ver que no hay DB así lo recreará? – max4ever

+0

Me encontré con el mismo problema: el archivo se ha eliminado, pero los datos todavía estaban en la memoria. Intenté 'null'ing los DAOs en vano. Estaba pensando si tal vez llamar a 'close()' ayudaría, pero supongo que eso metería demasiado con el tipo de recuento de referencias de 'OpenHelperManager.getHelper()' y '.releaseHelper()'? – Sebastian

3

Para eliminar la base de datos utilizar estos comandos:

this.connectionSource.close(); 
context.deleteDatabase(DATABASE_NAME); 

Para volver a crear/abrir la base de datos actual utilice estos comandos:

SQLiteDatabase db = context.openOrCreateDatabase(DATABASE_NAME, 0, null); 
this.connectionSource = new AndroidConnectionSource(db); 

Usted tendrá que mantener una referencia al contexto en su base de datos ayudante.

Cuestiones relacionadas