我的某个应用程序存在一个非常烦人的问题。当我使用增加版本的应用程序和数据库发布更新时。
触发更新并删除旧数据库并引入新数据库。以下是更新后的代码
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;
}
答案 0 :(得分:1)
,将数据库数据备份到临时表中,然后删除表,并创建新表。最后,复制旧数据。
更新:
您还可以通过打开的游标将数据备份到java变量,并在创建新数据库时将其转储回来