2012-02-16 1 views
13

を使用してsqliteのデータベースのデータを消去します。は、プログラムで、私はAndroid上ormliteでormliteデータベースのすべてのデータを消去したり、データベースを削除(し、それを再作成)するための方法を探しているのだormliteライブラリ

現時点では、DatabaseHelperのDATABASE_VERSIONのみを変更できます。

しかし、私はアプリケーションをコンパイルする必要があります。

誰かがこのケースを処理する方法を知っていますか?

答えて

17

@ Juliaの回答はうまくいくでしょう。 ORMLiteは、テーブルからすべての行を削除するTableUtils.clearTable() method callもサポートしています。

これでデータベースはクリアされませんが、順番に各テーブルをクリアできます。次のようなものがあります。

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

編集:

max4ever @context.deleteDatabase(...)は、データベースをクリアする他の方法よりもはるかに高速であることを指摘しました。しかし、この呼び出しはテーブル定義を削除しますが、TableUtils.clearTable(...)はスキーマをそのまま残します。

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

現在のデータベースがこれらのコマンドを使用して開く/再作成するには:データベースは、これらのコマンドを使用して削除するには

+0

が、これは痛々しいほど遅い –

+2

を働いていた、10個のテーブルに30秒程度かかり、context.deleteDatabaseがインスタント – max4ever

+0

@Gray 'context.deleteDatabase(...)'明確なすべてのデータベースのデータであり、これはTableUtils.clearTable' 'との違いであるあなたに感謝しますそのとおり? –

5

あなたはOrmLiteSqliteOpenHelperを拡張し、あなたのDatabaseHelperクラスで

context.deleteDatabase(DATABASE_NAME); 

を呼び出すことができます。 contextは、コンストラクタ内のDatabaseHelperクラスに渡されます。

データベースが必要とされている次回は、それが再作成され、

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

が呼び出されます。

+0

ありがとうございましたjulia –

+3

これを使用すると、ormLiteに変更が表示されず、アプリケーションを強制終了して再表示する必要があります。強制的に強制的に強制的に更新する必要がありますそれはそれを再現するでしょうか? – max4ever

+0

同じ問題が発生しました。ファイルは削除されましたが、データはまだメモリに残っていました。 DAOを無駄にしようとしました。多分() '近い役立つ'を呼び出す場合、私は考えていたが、私はそれが 'OpenHelperManager.getHelper()'と '.releaseHelper()'の参照カウントの一種で、あまりにも多くの混乱をだろうと思いますか? – Sebastian

3

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

あなたは、あなたのデータベースにコンテキストへの参照を保持する必要がありますヘルパー。

関連する問題