更新sqlite版本后保存数据

时间:2014-10-14 22:08:02

标签: android sqlite

我在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);
        }
    }

2 个答案:

答案 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);
      }
    }

等等。