国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

数据库版本如何单独升级,并且将原有数据迁移

发布时间:2019/07/18标签:   数据库    点击量:

原标题:数据库版本如何单独升级,并且将原有数据迁移
在咱们开辟的利用中,个别都市波及到数据库,应用数据的时间会波及到数据库的进级、数据的迁徙、增添行的字段等。比方,用户定制数据的保留,文件的端点续传信息的保留等都市波及到数据库。​咱们利用第一个版本是V1.0,在迭代版本V1.1 时,咱们在数据库中增添了一个字段。因而V1.0的数据库在V1.1版本须要进级,V1.0版本进级到V1.1时本来数据库中的数据不能丧失,​那末在V1.1中就要有处所可能检测进去版本的差别,而且把V1.0软件的数据库进级到V1.1软件可能应用的数据库。也就是说,要在V1.0软件的数据库的谁人表中增添谁人字段,并给予这个字段默许值。 利用中怎样检测数据库须要进级呢? SQLiteOpenHelper 类中有一个方式publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){}​当咱们创立工具的时间假如传入的版本号大于之前的版本号,该方式就会被挪用,经过推断oldVersion 和 newVersion 便可以决议怎样进级数据库。在这个函数中把老版本数据库的响应表中增添字段,并给每笔记录增添默许值便可。新版本号和老版本号都市作为onUpgrade函数的参数传出去,便于开辟者晓得数据库应当从哪个版本进级到哪个版本。进级实现后,数据库会主动存储最新的版本号为以后数据库版本号。数据库进级SQLite供给了ALTER TABLE下令,同意用户重定名或增加新的字段到已有表中,然而不能从表中删除字段。而且只能在表的末端增加字段,比方,为Orders 表中增加一个字段:”ALTER TABLE Order ADDCOLUMN Country”代码以下:publicclassOrderDBHelperextendsSQLiteOpenHelper{privatestaticfinalintDB_VERSION=1;privatestaticfinalStringDB_NAME="Test.db";publicstaticfinalStringTABLE_NAME="Orders";publicOrderDBHelper(Contextcontext,intversion){super(context,DB_NAME,null,version);}@OverridepublicvoidonCreate(SQLiteDatabasedb){Stringsql="createtableifnotexists"+TABLE_NAME+"(Idintegerprimarykey,"+"CustomNametext,OrderPriceinteger)";db.execSQL(sql);}@OverridepublicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){Log.e("owen","DBonUpgrade");if(newVersion==2){db.execSQL("ALTERTABLE"+TABLE_NAME+"ADDCOLUMNCountry");Cursorcr=db.rawQuery("select*from"+TABLE_NAME,null);while(cr.moveToNext()){Stringname=cr.getString(cr.getColumnIndex("CustomName"));ContentValuesvalues=newContentValues();values.put("CustomName",name);values.put("Country","China");db.update(TABLE_NAME,values,"CustomName=?",newString[]{name});}cr.close();}}OrderDBHelperorderDBHelper=newOrderDBHelper(this,2);SQLiteDatabasedb=orderDBHelper.getWritableDatabase();ContentValuescontentValues=newContentValues();contentValues.put("OrderPrice",100);contentValues.put("CustomName","OwenChan");db.insert(OrderDBHelper.TABLE_NAME,null,contentValues);Log.e("owen","createfinish");Cursorcr=db.rawQuery("select*from"+OrderDBHelper.TABLE_NAME,null);while(cr.moveToNext()){Stringname=cr.getString(cr.getColumnIndex("CustomName"));Log.e("owen","name:"+name);Stringcountry=cr.getString(cr.getColumnIndex("Country"));Log.e("owen","country:"+country);}cr.close();db.close();

上一篇:运维老司机总结:最常用的150个命令

下一篇:没有了

返回
版权信息Copyright © IT技术教程 版权所有    ICP备案编号:鲁ICP备09013610号