我在一个 android 项目中使用ORMLite,我不想使用扩展活动,因为我在 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<SomeObject, Integer> 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<SomeObject, Integer> getSomeObjectDao() throws SQLException {
if (someObjectTable == null) {
dateTable = getDao(SomeObject.class);
}
return someObjectTable;
}
这个想法是创建DataAccess
类并让它创建DBHelper
如果它还没有。
有人可以告诉我这是对还是错,或者我是否走在正确的道路上?
谢谢!