2012-05-13 13 views
10

Tengo una aplicación que usa ORMLite. Necesito crear una función para restablecer el db completo (básicamente, necesito eliminar todas las filas de cada db, reiniciar el autoincremento y reiniciar los índices).ORMLite restablecer todas las tablas

Probablemente pueda hacer esto iniciando un truncado en cada tabla, pero ¿tiene ORMLite algún método específico para hacer esto?

Respuesta

29

ORMLite no tiene un método especial para reiniciar todo el db. Es compatible con el TableUtils.clearTable(connectionSource, dataClass)) method que elimina todas las filas de la tabla, lo que borrará el índice, pero esto no restablecerá el auto-incremento. Además, no estoy seguro de qué "restablecer índices" implica más que borrarlos. El proceso de reinicio del auto-incremento dependerá en gran medida de la base de datos, por lo que ORMLite probablemente nunca tendrá soporte nativo de todos modos.

Creo que su mejor opción es drop the table using TableUtils.dropTable() y luego volver a create it with TableUtils.createTable().

+0

se puede obtener el mismo efecto de dbhelper.onUpgrade (dbhelper.getWritableDatabase(), 0, DatabaseHelper.DATABASE_VERSION); ? – max4ever

+0

Hola @ max4ever, no creo que lo haga por ti. Tienes que implementar el método 'onUpgrae (...)', así que depende de cómo lo hagas. Si su 'onUpgrade (...)' cae y luego crea, funcionará, sí. – Gray

+0

@Gray para borrar inc IDX automático primaria puede utilizar execRaw() con este SQL: executeRawNoArgs ("Borrar de la sqlite_sequence donde nombre = '" + TABLENAME + "';"); – drdrej

1

También puede usar TableUtils.createTableIfNotExists (source, dataClass). Útil cuando se prueba.

4

Hay una manera posible ... eliminar la base de datos, pero este método generalmente se usa cuando el usuario cierra la sesión e inicia sesión con otro ID de usuario etc., al iniciar se crea db y al finalizar la sesión se elimina db.

mContext.deleteDatabase("xxxxxx"); 

donde "xxxxx" es el nombre de la base de datos.

Cuestiones relacionadas