Настройка Ormlite без использования базовых действий

Я использую 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 , если он еще не создал.

Может ли кто-нибудь сказать мне, правильно это или неправильно, или я на правильном пути?

Спасибо!

12
задан Gray 5 October 2011 в 12:19
поделиться