私のアプリケーションでは、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();
}
}
- それは潜在的な問題になるとアプリケーションの間のデータを失うことにつながる可能性をアップグレード?
この回答をお探しですか? – andygeers