سؤال

لدي مشكلة صغيرة مع Ormlite على Android.

عندما أقوم بزيادة إصدار قاعدة البيانات ، onUpgrade تسمى الطريقة كما هو متوقع في مساعد Ormlite الخاص بي. بعد الترقية ، 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

ليس لدي أدنى فكرة عن سبب عدم وجود اتصال تم مسحه هو نفسه الذي تم حفظه.

لقد وضعت أيضًا وظائف قاعدة البيانات الخاصة بي (إدراج ...) في فئة 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);
    }
}

أعتقد أنه شيء بسيط أنا في عداد المفقودين.

شكرا مقدما لجهدك.

هل كانت مفيدة؟

المحلول

حسنًا ، أرى المشكلة وهي موجودة ، لسوء الحظ ، في برنامج العينة أيضًا. في ال ormlite فئة المساعدة ، onUpgrade يجب استخدام الطريقة:

onCreate(db, connectionSource);

بدلاً من ما يلي الذي يدعو الفئة الفرعية:

onCreate(db);

لقد استنسخت هذه المشكلة في HelloAndroid مثال برنامج تم إصلاحه. لقد قمت أيضًا بإصلاح هذا بشكل صحيح في OrmLiteSqliteOpenHelper الفئة الأساسية في جانب Android من رمز Ormlite. آسف للمشكلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top