Я немного смущен, как это сделать правильно. Вот мой DatabaseHelper класс:Использование шаблона Singleton для базы данных Sqlite в Android
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;
}
...
Предполагая, что это правильно, это правильный способ справиться с классом запрашивая:
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();
}
...
И если это так, как я правильно вызвать метод дб из какого-либо другого кода, такого как Activity, Fragment и т. д., где угодно.
Я тоже думал о том, чтобы сделать этот конструктор частным (несколько примеров в Интернете были опубликованы, поэтому я оставил его на всякий случай), но я рад это слышать. Итак, скажем, вы где-то в коде, как бы вы назвали 'insertSomethingIntoDb'? Будет ли я работать с DatabaseProcessor db = new DatabaseProcessor (getActivity()), а затем 'db. insertSomethingIntoDb ("some_key"); '? – KaliMa
Поскольку метод 'getInstance (...)' является 'static', вы можете сделать это' DatabaseHelper.getInstance (context) .insertSomethingIntoDb (...) ' – Titus
Я не могу технически сделать это таким образом, функция в классе Процессор – KaliMa