2012-02-16 9 views

Odpowiedz

17

@ Odpowiedź Julii będzie działać dobrze. ORMLite obsługuje także TableUtils.clearTable() method call, który usuwa wszystkie wiersze z tabeli:

To nie wyczyści bazy danych, ale można wyczyścić każdą tabelę po kolei. Coś jak poniżej:

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

Edit:

@ max4ever wskazał, że context.deleteDatabase(...) jest o wiele szybciej niż w przypadku innych sposobów czyszczenia bazy danych. Jednak to wywołanie spowoduje usunięcie definicji tabeli, podczas gdy TableUtils.clearTable(...) pozostawi schemat nienaruszony.

+0

dziękuję to działało –

+2

to jest boleśnie powolne, zajmuje około 30 sekund na 10 tabelach, context.deleteDatabase jest natychmiastowe – max4ever

+0

@Gray 'context.deleteDatabase (...)' wyczyść wszystkie dane bazy danych i to jest różnica z 'TableUtils.clearTable' Zgadza się? –

5

Można zadzwonić

context.deleteDatabase(DATABASE_NAME); 

w swojej klasie DatabaseHelper która rozciąga OrmLiteSqliteOpenHelper. context jest przekazywana do klasy DatabaseHelper w konstruktorze.

Następnym razem potrzebna jest baza danych, jest odtworzony i

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

nazywa.

+0

dziękuję julia –

+3

jeśli używam tego, to ormLite nie widzi zmian i muszę zabić i ponownie otworzyć aplikację, aby zobaczyć, czy jest jakiś sposób wymuszenia ormLite na odświeżenie i zobaczenie, że nie ma tak bazy danych będzie go odtworzyć? – max4ever

+0

Wystąpił ten sam problem: plik został usunięty, ale dane były nadal w pamięci. Próbowałem "null" na DAO bezskutecznie. Zastanawiałem się, czy może wywołanie funkcji 'close()' pomogłoby, ale myślę, że byłoby to zbyt skomplikowane w porównaniu z lektorem 'OpenHelperManager.getHelper()' i '.releaseHelper()'? – Sebastian

3

Aby usunąć bazę danych używać tych poleceń:

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

Aby odtworzyć/otworzyć obecny w bazie używać tych poleceń:

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

Będziesz musiał zachować odniesienie do kontekstu, w bazie danych pomocnik.

Powiązane problemy