令人讨厌的SQLite查询问题与Expandable Listview

时间:2011-12-29 21:00:39

标签: java android sqlite

我的某个应用程序存在一个非常烦人的问题。当我使用增加版本的应用程序和数据库发布更新时。

触发更新并删除旧数据库并引入新数据库。以下是更新后的代码

    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 个答案:

答案 0 :(得分:1)

在onUpdate中

,将数据库数据备份到临时表中,然后删除表,并创建新表。最后,复制旧数据。

更新:

您还可以通过打开的游标将数据备份到java变量,并在创建新数据库时将其转储回来