アプリケーション内で SQLite データベースを使用したいと考えています。を拡張するクラスを作成しましたSQLiteOpenHelper
。私が最初にコードを書いたとき、データベースは/data/data/(package)/database. The package name was my reverse domain + /mobile/app
. 次に、逆のプロジェクト内に別のパッケージを作成しdomain + /mobile/data
、データベース クラスをそこに移動しました。
/data/data/(original package)/database
(スナップショットを使用しないために)エミュレータをリロードするまで存在していました。
それ以来:
/data/data/(original package)/
が作成されますが、データベース ディレクトリ/data/data/(data package)/
がなく、ファイル システムに作成されません。私が試してみました:
データベース クラスを元のパッケージに戻す
エミュレータの新しいバージョンの作成
エミュレータ内でアプリをアンインストールしてから再インストールします。
データベースのバージョン変数を増やす
アプリの他の部分で、データベース クラスに関連付けられたコードにコメントを付けます。
これが私のdbクラスコードです。
public class BusinessOpsDatabase extends SQLiteOpenHelper {
private static final String TAG = "BusinessOpsDatabase";
private static final int DB_VERSION = 1;
private static final String DB_NAME = "bss_business_ops";
// country table variables
public static final String TABLE_COUNTRY = "country";
public static final String ID = "_ID";
public static final String COL_COUNTRY_NAME = "country_name";
private static final String CREATE_TABLE_COUNTRY = "create table "
+ TABLE_COUNTRY + " (" + ID
+ " integer primary key autoincrement, " + COL_COUNTRY_NAME
+ " text not null);";
private static final String COUNTRY_SCHEMA = CREATE_TABLE_COUNTRY;
public BusinessOpsDatabase(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// create tables
db.execSQL(COUNTRY_SCHEMA);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// drop country
Log.w(TAG, "Upgrading database. Existing contents will be lost. ["
+ oldVersion + "]->[" + newVersion + "]");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_COUNTRY);
// create tables
onCreate(db);
}
}