Android sqlite
を使用して電話にローカルデータベースを作成しようとしています。
以下に示すように、データベースを作成して「ヘルプ」を提供するために使用するヘルパークラスがあります。
私のコードの主要部分でこのクラスのオブジェクトを作成したいのですが、データベースとテーブルもそこに作成されます。
問題:
クラスのオブジェクトを作成するときはいつでも、ヘルパーのonCreate
メソッドを呼び出していないようです。これが起こるはずだと思った。 onCreate
は基本的にクラスのコンストラクターだと思いました。 (私は間違っていると思います)
onCreate
メソッドを呼び出さないのですか?public class SmartDBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "smart_lite_db.db";
private static final int DATABASE_VERSION = 2;
private static final String NOTIFY_TABLE_NAME = "user_notify_data";
private static final String HR_TABLE_NAME = "user_hr_data";
private static final String NOTIFY_TABLE_CREATE =
"CREATE TABLE " + NOTIFY_TABLE_NAME +
" (counter INTEGER PRIMARY KEY, " +
"userresponse INTEGER, " +
"notifytime INTEGER);";
private static final String DATA_TABLE_CREATE =
"CREATE TABLE " + HR_TABLE_NAME +
" (counter INTEGER PRIMARY KEY, " +
"hr INTEGER, " +
"act INTEGER, " +
"timestamp INTEGER);";
public SmartDBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.v("smartdbhelper", "before creation");
db.execSQL(NOTIFY_TABLE_CREATE);
Log.v("smartdbhelper", "middle creation");
db.execSQL(DATA_TABLE_CREATE);
Log.v("smartdbhelper", "after creation");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
public class SmartApp extends Activity implements OnSharedPreferenceChangeListener {
private SmartDBHelper dBHelper;
public void onCreate(Bundle savedInstanceState) {
//where i am wanting to create the database and tables
dBHelper = new SmartDBHelper(getContext());
}
}
onCreate
はデータベースクラスのコンストラクタではありません。存在しないデータベースを開こうとした場合にのみ呼び出されます。データベースを開く/作成するには、次のいずれかのメソッドへの呼び出しを追加する必要があります。
public class SmartApp extends Activity implements OnSharedPreferenceChangeListener {
private SmartDBHelper dBHelper;
public void onCreate(Bundle savedInstanceState) {
//where i am wanting to create the database and tables
dBHelper = new SmartDBHelper(getContext());
// open to read and write
dBHelper.getWritableDatabase();
// or to read only
// dBHelper.getReadableDatabase();
}
}
それは少し大きいですが、これはあなたが見ることができる私のデータベースアダプターです: http://saintfeintcity.org/projects/sfc/repository/entry/trunk/src/org/saintfeintcity/データベース/GameDbAdapter.Java
getWritableDatabase()
またはgetReadableDatabase()
を呼び出す必要があります。
oncreate()メソッドはコンストラクタではなく、データベースが初めて作成されたときにも呼び出されるため、getWritableDatabase()またはgetReadableDatabase( )データベースに対してオープンまたは作成する場合。
getReadableDatabase():-データベースを作成および/または開きます。
getWritableDatabase():-読み取りと書き込みに使用されるデータベースを作成および/または開きます。