次の 2 つの方法で SQLiteDatabase を開くことができます。
SQLiteDatabase.openDatabase()
SQLiteOpenHelper.getWritableDatabase ()
使用時のより多くの制御を除いて、2つのアプローチに違いはないようですSQLiteDatabase.openDatabase()
Q1- なぜ重複するのですか?
Q2- ソフトウェア設計の観点から、どのように恩恵を受けることができますか
次の 2 つの方法で SQLiteDatabase を開くことができます。
SQLiteDatabase.openDatabase()
SQLiteOpenHelper.getWritableDatabase ()
使用時のより多くの制御を除いて、2つのアプローチに違いはないようですSQLiteDatabase.openDatabase()
Q1- なぜ重複するのですか?
Q2- ソフトウェア設計の観点から、どのように恩恵を受けることができますか
拡張する独自のクラスを作成するとSQLiteOpenHelper
、メイン コードから多くの SQLite db コードを削除できます。onCreate(...)
メソッドとメソッドをオーバーライドしてonUpdate(...)
、アプリの初回実行時にデータベースを自動的に作成し、アプリの今後のアップグレードでデータベースを更新できるようにします。
また、SQLiteOpenHelper
すべての「ボイラープレート」タスク (クエリ、挿入、削除など) を実行するメソッドを拡張に追加できるので便利です。事実上、メイン コードはデータベースへの参照を必要とせず、拡張SQLiteOpenHelper
クラスのメソッドを呼び出すだけで済みます。
SQLiteDatabase
offers lower level access and control, while, as mentioned above, SQLiteOpenHelper
takes care of a lot of boilerplate code, and you should generally prefer it. One situation where you need to use SQLiteDatabase
is when you want to open a database (often pre-populated) on external storage -- with SQLiteOpenHelper
you cannot specify the DB file location, it defaults to creating one in your app's private directory (under org.myapp/databases
).