openOrCreateDatabase
引き続きAndroidアプリの開発について勉強中で、SQLite関連をやってるが、わかりにくい・・・
android.database.sqliteの下にSQLiteOpenHelperというクラスがあって、このクラスを使って初期化するのが一般的らしいんだが、
オーバーライドしたクラスを作成する必要があるので、アクティビティが複数あるならSQLiteOpenHelperもpublicなクラスで用意しないといけない。
つまり、ソースファイルを分離しなきゃダメぽい。
他にSQLiteDatabaseクラスにopenOrCreateDatabaseというメソッドがあって、メソッド一発で必要なら作成してopenできる。
こっちの方が簡単そうなんだが、引数はDBファイル名じゃなくてpathを渡す必要があり、ファイル名だけを指定するとアプリ実行時にエラーになる。
更に他に、android.content.ContextWrapperクラスの下に同じ名前のopenOrCreateDatabaseメソッドがある。
こちらはpathではなくファイル名を指定して、2番目の引数にファイルのモードを指定する。
ファイルのモードはint型だが、android.contentで定数が定義されていて、
(パーミッションはMODE_PRIVATEしか確認してないが、意味を考えるとそうなると思う)
android.content.ContextWrapperはandroid.app.Activityが継承しているので、Activityを継承したクラスで使用可。
openOrCreateDatabaseが2種類あって凄くわかりにくいが、アプリ用のDBを作成(open)するにはandroid.content.ContextWrapperの方のメソッドを使えば良い感じ。
android.content.ContextWrapperはActivityが継承しているので別途import不要だが、DBの操作自体はandroid.database.sqlite.SQLiteDatabase等で行うので、操作するのにimportは必要。
てな感じと思ったんだが、
DB作成時にtable作成とかもしなきゃいけないし、SQLiteOpenHelperならonCreateメソッドで作成時処理を書けるから、
やっぱSQLiteOpenHelper使ったほうが良さそうかもしれない・・・
もうちょい勉強の必要あるな。
android.database.sqliteの下にSQLiteOpenHelperというクラスがあって、このクラスを使って初期化するのが一般的らしいんだが、
オーバーライドしたクラスを作成する必要があるので、アクティビティが複数あるならSQLiteOpenHelperもpublicなクラスで用意しないといけない。
つまり、ソースファイルを分離しなきゃダメぽい。
他にSQLiteDatabaseクラスにopenOrCreateDatabaseというメソッドがあって、メソッド一発で必要なら作成してopenできる。
こっちの方が簡単そうなんだが、引数はDBファイル名じゃなくてpathを渡す必要があり、ファイル名だけを指定するとアプリ実行時にエラーになる。
更に他に、android.content.ContextWrapperクラスの下に同じ名前のopenOrCreateDatabaseメソッドがある。
こちらはpathではなくファイル名を指定して、2番目の引数にファイルのモードを指定する。
ファイルのモードはint型だが、android.contentで定数が定義されていて、
定数名 | 値 | パーミッション |
---|---|---|
MODE_PRIVATE | 0 | 660 |
MODE_WORLD_READABLE | 1 | 664 |
MODE_WORLD_WRITEABLE | 2 | 666 |
android.content.ContextWrapperはandroid.app.Activityが継承しているので、Activityを継承したクラスで使用可。
openOrCreateDatabaseが2種類あって凄くわかりにくいが、アプリ用のDBを作成(open)するにはandroid.content.ContextWrapperの方のメソッドを使えば良い感じ。
android.content.ContextWrapperはActivityが継承しているので別途import不要だが、DBの操作自体はandroid.database.sqlite.SQLiteDatabase等で行うので、操作するのにimportは必要。
てな感じと思ったんだが、
DB作成時にtable作成とかもしなきゃいけないし、SQLiteOpenHelperならonCreateメソッドで作成時処理を書けるから、
やっぱSQLiteOpenHelper使ったほうが良さそうかもしれない・・・
もうちょい勉強の必要あるな。