2011-02-25 6 views
2

から作成される、SQLiteのデータベースを再利用するのではなく、作成された - 既存のデータベースが消失します。ここで、SQLiteのデータベースではなく、再利用

は、私のクラスは

class HDDBAdapter {
int DB_LOCA_VERSION = 1;
HDDBOpenHelper hdHelper;

HDDBAdapter(_ctxt) { 
     hdHelper = new HDDBOpenHelper(_ctxt, "mydb.db", null, DB_LOCA_VERSION); 
    } 

    open() { 
    try { 
     db =hdHelper.getWritableDatabase(); 
    } 
    catch ... 
    } 


static class HDDBOpenHelper extends SQLiteopenHelper { 
    public HunyDewDBOpenHelper(Context ct, String n, CursorFactory cf, int v) { 
     super(ct, n, cf, vv); 
    } 

    private static final String DB_CREATE_BOX = "create table " + "mydb.db" + "(" 
     + ... + ");"; 

    public void onCreate(SQLiteDatabase arg0) { 
     arg0.setVersion(DB_LOCA_VERSION); 
     arg0.execSQL(DB_CREATE_BOX); 
    } 

    public void onOpen(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     super.onOpen(db); 
    } 

}

私はアプリケーションを初めて実行している方法です - アプリケーションは、私の入力を備えたデータベースを作成します。その後、私はアプリケーションの新しいバージョンを読み込みます - DB_LOCA_VERSIONは同じままです。新しいバージョンでは、変更されたデータベースに関連しないロジックです。

だから私は、最初のアプリケーションを「強制停止」(「データクリア」を実行されていない)、その後、アプリケーションをアンインストールします。今度は新しいバージョンを実行します。この新しいバージョンは既存のデータベースを使用しません。新しいバージョンを作成します。何故ですか?私は既存のデータベースを使いたいです。私がここに何かを紛失している場合は、私に知らせてください。手がかり/ポインタ/質問は参考になります。

私はそれをインストールすると明らかにgetWritableDatabaseで失敗しますので、onCreateが最初に呼び出されてからonOpenの前に失敗します。 HDDBAdapterのコンストラクタは、アプリのバージョン間で変更されていませんのでご注意ください - それは、既存の「mydb.db」ためhdHelperを得るべきではないのですか? getWritableDatabaseを持っていないとonCreateが呼び出されます。

は、だから私は、最初のアプリケーションを「強制停止」(「データクリア」を実行されていない)、その後、アプリケーションをアンインストールし

答えて

5

ありがとうございます。今度は新しいバージョンを実行します。この新しいバージョンは既存のデータベースを使用しません。新しいバージョンを作成します。何故ですか?

アプリをアンインストールすると、そのアプリのすべてのデータベースが削除されるためです。

+0

OK - 私は明示的な「クリアデータ」は、それを指摘いただきありがとうございます:-(データベースを削除すると思ったので、どのように私はアプリが新しいアプリをインストールするには、アンインストールし、既存のデータベースを削除しないでください – Abhi

+0

多分私が尋ねる必要があります。?それ私が開発中のadbを-rインストールしないことを意味新しい質問??だけでアプリを再インストールしていないのはなぜ – Abhi

+1

として? – Cristian

0

1つの選択肢は、アンインストール時にdbファイルをsdcardまたは他のいくつかのフォルダに変更することです。
新しいアプリケーションがインストールされると、それを戻します。

関連する問題