Android上的OrmLite存在一个小问题。
当我增加数据库版本时,在我的OrmLite Helper中按预期调用onUpgrade
方法。升级后,调用onCreate
方法,我得到此异常:
11-24 10:09:45.720: ERROR/AndroidConnectionSource(390): connection saved
com.j256.ormlite.android.AndroidDatabaseConnection@44f0f478 is not the one
being cleared com.j256.ormlite.android.AndroidDatabaseConnection@44f5d310
我不清楚为什么清除的连接与保存的连接不一样。
我还将我的数据库函数(insert ...)放入OrmLite Helper类中。也许这可能是一个问题?!?
我的助手类的摘录:
public class OrmLiteDBProvider extends OrmLiteSqliteOpenHelper
implements IEntityProvider, IDBProvider {
//snip
@Override
public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) {
try {
Log.i(OrmLiteDBProvider.class.getName(), "Creating database and tables");
TableUtils.createTable(connectionSource, OrgManaged.class);
} catch (SQLException e) {
Log.e(OrmLiteDBProvider.class.getName(),
"Can't create database and tables", e);
throw new RuntimeException(e);
}
}
@Override
public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource,
int oldVersion, int newVersion) {
try {
Log.i(OrmLiteDBProvider.class.getName(),
"Database version changed. Dropping database.");
TableUtils.dropTable(connectionSource, OrgManaged.class, true);
// after we drop the old databases, we create the new ones
onCreate(db);
} catch (SQLException e) {
Log.e(OrmLiteDBProvider.class.getName(), "Can't drop databases", e);
throw new RuntimeException(e);
}
}
我认为这很简单,我很想念。
提前感谢您的努力。
答案 0 :(得分:7)
好的,我看到了问题,不幸的是,它也存在于示例程序中。在ORMLite帮助程序类中,onUpgrade
方法应使用:
onCreate(db, connectionSource);
而不是调用子类的以下内容:
onCreate(db);
我已在已修复的HelloAndroid
示例程序中重现了此问题。我还在ORMLite代码的Android端的OrmLiteSqliteOpenHelper
基类中正确修复了这个问题。对不起,问题就在这了。