これを正しく行う方法が少し分かりません。ここに私のDatabaseHelperクラスです:AndroidでSqliteデータベースのシングルトンパターンを使用する
public class DatabaseProcessor {
private SQLiteDatabase mDatabase;
private DatabaseHelper mSQLHelper;
private Context mContext;
public DatabaseProcessor(Context context) {
mContext = context;
mSQLHelper = new DatabaseHelper(mContext);
}
private void open() throws SQLException {
mDatabase = mSQLHelper.getWritableDatabase();
}
private void close() {
mDatabase.close();
}
public void insertSomethingIntoDb(String key) {
ContentValues values = new ContentValues();
values.put("some_column_name", name);
open();
mDatabase.insert("some_table_name", null, values);
close();
}
...
そして、これが正しいならば、どのように私はきちんとデシベルメソッドを呼び出します:
public class DatabaseHelper extends SQLiteOpenHelper {
private static DatabaseHelper mInstance = null;
private static final String DB_NAME = "database.db";
private static final int DB_VERSION = 1;
private Context mContext;
public static DatabaseHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new DatabaseHelper(context.getApplicationContext());
}
return mInstance;
}
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
mContext = context;
}
...
これが正しいと仮定すると、これは、照会クラスを処理するための正しい方法でありますアクティビティ、フラグメントなどのコード内のどこからでも、どこからでもアクセスできます。
私はそのコンストラクタを非公開にすることも考えていました(私はそれをちょうどそのようにしてしまったので、いくつかの例を公開しました)が、これを聞いてうれしく思います。だからコードのどこかにいるとしましょう。あなたは 'insertSomethingIntoDb'をどのように呼びますか?私は 'DatabaseProcessor db = new DatabaseProcessor(getActivity());'と 'dbを実行しますか? insertSomethingIntoDb( "some_key"); '? – KaliMa
'getInstance(...)'メソッドが 'static'なので、これを行うことができます。' DatabaseHelper.getInstance(context).insertSomethingIntoDb(...) ' – Titus
私は技術的にそれを行うことはできません。プロセッサークラス – KaliMa