2011-06-21 6 views
2

私のアプリケーションでは、SQLiteデータベースにデータを格納しています。そして、時々私はアプリケーションの新しいバージョンをリリースしますが、決してデータベーススキーマを変更することはありません。私の顧客の一人は、アプリケーションをアップグレードするたびにすべてのデータが失われていると私に伝えました。アプリケーションのアップグレード後にSQLite DBデータが失われる - どのようにすることができますか?

私は自分のコードを徹底的に調査して、ユーザーがデータを失っている可能性を見つけられませんでした。

基本的にSQLiteデータベースの処理に関連する私のコードは次のようになります。私は、私はクラスSQLiteOpenHelper伸びていないというのが私のコードで唯一の欠点参照

public final class Storage 
{ 
    private SQLiteDatabase database; 
    public static final String DATABASE_NAME="my.db"; //db name 
    /** 
    * database tables creation scripts 
    */ 
    private static final String DATA1_CREATE="create table if not exists ..."; 
    private static final String DATA2_CREATE="create table if not exists ..."; 
    private static final String IDX_DATA1_CREATE="create index if not exists..."; 
    private static final String IDX_DATA2_CREATE="create index if not exists ..."; 

    /** 
    * Constructs Storage object and if necessary creates tables 
    * @param context application environment (Android context) 
    */ 
    public Storage(Context context) 
    { 
     database=context.openOrCreateDatabase(DATABASE_NAME, Context.MODE_WORLD_WRITEABLE, null); 
     database.beginTransaction(); 
     try 
     { 
      database.execSQL(DATA1_CREATE); 
      database.execSQL(IDX_DATA1_CREATE); 
      database.execSQL(DATA2_CREATE); 
      database.execSQL(IDX_DATA2_CREATE); 
      database.setTransactionSuccessful(); 
     } 
     catch(Exception e) 
     { 
      Log.d(TAG, "Can't create database", e); 
      database=null; 
      return; 
     } 
     database.endTransaction(); 
    } 

    public synchronized SQLiteDatabase getDatabase() 
    { 
     return database; 
    } 

    public void close() 
    { 
     if(database!=null) 
      database.close(); 
    } 
} 

- それは潜在的な問題になるとアプリケーションの間のデータを失うことにつながる可能性をアップグレード?

+0

この回答をお探しですか? – andygeers

答えて

0

sqlitehelperクラスを作成し、onupgrade()に必要なコードを書き込んでください

+0

onUpgradeはアプリケーションのアップグレード時に毎回呼び出されますが、データベーススキーマを変更しないと、onUpgrade()は空になります。もしそうなら、それは意味をなさないでしょうか? – barmaley

関連する問題