2017-12-20 17 views
-1

SQLiteデータベースを作成したいと思います。
私はチュートリアルに従いました。私はMainActivityでデータベースを作成する2つの行を持っています。SQLiteデータベースの作成にgetWritableDatabase()が必要なのはなぜですか?

LugaresDB lugaresDB = new LugaresDB(getApplicationContext()); 
SQLiteDatabase db = lugaresDB.getWritableDatabase(); 

私の質問:最初の行だけでデータベースを作成することが期待されましたが、作成しません。
2行目を追加する必要があります。どうして?

+1

最初の行はファイルではなくオブジェクトを作成します。同様に 'new File(...)'はファイルではなくオブジェクトを作成します。 – CommonsWare

答えて

4

フレームワークの実装方法です。

なぜそれがそのように実装されているのかを正確に言うことはできませんが、一般的にsingle responsibilityleast astonishmentの原則に従うのがよい設計アイデアです。コンストラクタはオブジェクトインスタンスの初期化だけを担当します。実際にファイルI/Oを使用してデータベースを開くなどのその他の操作は、望ましくない副作用です。これらの他のアクションは、その名前に動詞を持つメソッドとしてモデル化されています。

0

これがクラスの実装方法です。 LugaresDBSQLiteOpenHelperのサブクラスのようです。最初の行は、のヘルパーオブジェクトを作成し、SQLiteDatabaseの読み取り専用または書き込み可能インスタンスの作成に使用できます。これは2行目のものです。

関連する問題