我在sqlite数据库中有一个表。我将数据库版本更改为2并添加另一个表。 第一张表的用户数据消失了。 所以我问你:我如何保留所有用户数据?
public class Database extends SQLiteOpenHelper {
private static final long serialVersionUID = 1L;
static int databaseVersion = 2;
static String databaseName = "DBInformation";
String table1 = "CREATE TABLE people ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"name TEXT, "+
"age INTEGER )";
String table2 = "CREATE TABLE furniture ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"type TEXT, "+
"price INTEGER )";
public Database(Context context) {
super(context, databaseName, null, databaseVersion);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(table1);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL(table2);
db.execSQL("DROP TABLE IF EXISTS people");
this.onCreate(db);
}
}
答案 0 :(得分:0)
此:
db.execSQL("DROP TABLE IF EXISTS people");
删除旧人员表,删除此行,人员表将保留升级前的数据。
答案 1 :(得分:0)
如何保留所有用户数据?
不要删除people
表。只需创建furniture
表:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion<2) {
db.execSQL(table2);
}
}
明天,您可能会将架构版本提升为3并添加另一个表:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion<2) {
db.execSQL(table2);
}
if (oldVersion<3) {
db.execSQL(CREATE_RUTABAGA_TABLE_STATEMENT);
}
}
等等。