Pergunta

I'd looking for a method to erase all data of a ormlite database or delete the database (and then recreate it) with ormlite on android.

At this time, I can only change the DATABASE_VERSION of the DatabaseHelper.

But I have to compile the application.

Does someone know a method to handle that case?

Foi útil?

Solução

I'd looking for a method to erase all data of a ormlite database or delete the database (and then recreate it) with ormlite on android.

@Julia's answer will work well. ORMLite also supports a TableUtils.clearTable() method call which removes all rows from a table:

That won't clear a database but you can clear each table in turn. Something like the following:

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

Edit:

@max4ever pointed out that context.deleteDatabase(...) is a lot faster than other ways of clearing a database. But this call will remove the table definitions while TableUtils.clearTable(...) leaves the schema intact.

Outras dicas

You can call

context.deleteDatabase(DATABASE_NAME);

in your DatabaseHelper class which extends OrmLiteSqliteOpenHelper. context is passed to the DatabaseHelper class in the constructor.

The next time the database is needed, it is recreated and

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

is called.

To delete the database use these commands:

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

To recreate/open the current database use these commands:

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

You will have to keep a reference to the context in your database helper.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top