Раздражающая проблема SQLite Query с расширяемым списком - PullRequest
0 голосов
/ 30 декабря 2011

У меня очень раздражающая проблема с одним из моих приложений. Когда я выпускаю обновление с инкрементной версией приложения и базы данных.

При обновлении запускается, и старая база данных удаляется, и вводится новая. Ниже приведен код обновления при

    db.execSQL("DROP TABLE IF EXISTS table");
        db.execSQL("DROP TABLE IF EXISTS android_metadata");

        try {
            InputStream is = getAssets().open("sqlfile");
            BufferedReader reader = new BufferedReader(new InputStreamReader(is));
            String line  = reader.readLine();
            while(line != null){
                db.execSQL(line); 
                line = reader.readLine();
            }
            reader.close();

        } catch (IOException e) {

            throw new Error("Error copying database");

        }

    }

Сюда входит расширяемое меню, так как вы можете щелкнуть по стране, и в ней будут перечислены все строки в этой стране. Проблема в том, что в предыдущей версии это работало нормально. Но тогда при обновлении это не будет работать вообще, но любой другой запрос работает хорошо. Ниже приведен соответствующий запрос.

            protected Cursor getChildrenCursor(Cursor groupCursor) {

                    String countryID = Integer.toString(groupCursor.getInt(groupCursor.getColumnIndex("_id")));
                    SQLiteDatabase checkDB = null;
                    checkDB = SQLiteDatabase.openDatabase(DB_PATH, null, SQLiteDatabase.OPEN_READONLY);

                    Cursor value = checkDB.rawQuery("SELECT * FROM countries WHERE open='1' AND country=?", new String[]{countryID});

                    //checkDB.close();

                    return value;
            }

1 Ответ

1 голос
/ 30 декабря 2011

в onUpdate, сделайте резервную копию данных базы данных во временные таблицы, затем удалите таблицы и создайте новые. Наконец, скопируйте старые данные.

ОБНОВЛЕНИЕ:

вы также можете сделать резервную копию данных в переменные java с помощью курсоров, которые вы открываете, и при создании новой базы данных сбросить их обратно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...