Android数据库更新并保留原来数据

思路很简单,只需要把原来table中的数据转移就好
我们来看实现

 @Override
 private String createTableBook="create table Book(id integer primary key autoincrement,author text,price real,pages integer,name text)";
    private String CREATE_TEMP_BOOK = "alter table Book rename to _temp_book";
    private String INSERT_DATA = "insert into Book select * from _temp_book";
    private String DROP_BOOK = "drop table _temp_book";

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(CREATE_TEMP_BOOK);//将原来的table重命名
        db.execSQL(createTableBook);//新建一个和原来表名一样的table
        db.execSQL(INSERT_DATA);//将数据转移
        db.execSQL(DROP_BOOK);//删除中间表
    }

如果更新的表的属性属性多了一些,那么复制数据的sql语句就需要改一下

    private String INSERT_DATA = "insert into Book select *,'' from _temp_book";

再复习一下CRUD吧

ContentValues values = new ContentValues();
values.put("author","hughzhao");
values.put("price",12.68);
values.put("pages",450);
values.put("name","爱火的小果果");
db.insert("Book",null,values);
ContentValues values = new ContentValues();
values.put("price",15.68);
db.update("Book",values,"id=?",new String[]{"10"});
db.delete("Book","author=?",new String[]{"hughzhao"});
Cursor cursor = db.query("Book",null,null,null,null,null,null);
if(cursor.moveToFirst()){
	do{
		String name = cursor.getString(cursor.getColumnIndex("name"));
		Log.d("hughzhao",name);
	}while (cursor.moveToNext());
	}
cursor.close();
}

参考链接

你可能感兴趣的:(Android开发,数据库)