Я использую ORMLite в проекте Android, и я не хочу использовать расширенные действия, потому что я вставляю значения в базу данных в AsyncTask.
В документации говорится:
«Если вы не хотите расширять OrmLiteBaseActivity
и другие базовые классы, вам нужно будет продублировать их функциональность. Вам нужно будет вызвать OpenHelperManager.getHelper (Context context, Class openHelperClass)
в начале вашего кода, сохранить помощник и использовать его столько, сколько хотите, а затем вызвать OpenHelperManager.release ( )
, когда вы закончите с этим. "
Также говорится о добавлении вспомогательного класса базы данных в strings.xml
, который у меня есть.Так что я не уверен, что делаю не так.
Я использую класс под названием DataAccess
для своего уровня данных, который выглядит следующим образом:
public class DataAccess {
private Context context;
private DBHelper dbHelper;
public DataAccess(Context _context) {
this.context = _context;
dbHelper = getDBHelper(_context);
}
private DBHelper getDBHelper(Context context) {
if (dbHelper == null) {
dbHelper = (DBHelper) OpenHelperManager.getHelper(context, DBHelper.class);
}
return dbHelper;
}
}
И я использую расширенный вспомогательный класс:
public class DBHelper extends OrmLiteSqliteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final int DATABASE_VERSION = 1;
private Dao someObjectTable = null;
private ConnectionSource connectionSource = null;
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
this.connectionSource = connectionSource;
try {
TableUtils.createTable(connectionSource, SomeObject.class);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int oldVersion, int newVersion) {
}
public Dao getSomeObjectDao() throws SQLException {
if (someObjectTable == null) {
dateTable = getDao(SomeObject.class);
}
return someObjectTable;
}
Идея состоит в том, чтобы создать ] DataAccess
и попросите его создать DBHelper
, если он еще не создал.
Может ли кто-нибудь сказать мне, правильно это или неправильно, или я на правильном пути?
Спасибо!