Android应用程序更新的时候如果数据库修改了字段需要更新数据库,并且保留原来的数据库数据:
这是原有的数据库表
CREATE_BOOK = "create table book(bookId integer primarykey,bookName text);";
然后我们增加一个字段:
CREATE_BOOK = "create table book(bookId integer primarykey,bookName text,bookContent text);";
首先我们需要把原来的数据库表重命名一下
CREATE_TEMP_BOOK = "alter table book rename to _temp_book";
然后把备份表中的数据copy到新创建的数据库表中
INSERT_DATA = "insert into book select *,' ' from _temp_book";(注意' '是为新加的字段插入默认值的必须加上,否则就会出错)。
然后我们把备份表干掉就行啦。
DROP_BOOK = "drop table _temp_book";
然后把数据库的版本后修改一下,再次创建数据库操作对象的时候就会自动更新(注:更新的时候第一个创建的操作数据的对象必须是可写的,也就是通过这个方法getWritableDatabase()获取的数据库操作对象)
然后在onUpgrade()方法中执行上述sql语句就OK了
public class DBservice extends SQLiteOpenHelper{
private String CREATE_BOOK = "create table book(bookId integer primarykey,bookName 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 DBservice(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BOOK);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (newVersion) {
case 2:
db.execSQL(CREATE_TEMP_BOOK);
db.execSQL(CREATE_BOOK);
db.execSQL(INSERT_DATA);
db.execSQL(DROP_BOOK);
break;
}
}
分享到:
相关推荐
Android数据库升级并保留原来数据库数据的实现 采用的android orm框架 greendao
Android 完成数据库的升级,给旧表中添加字段并保持原有数据,有界面操作提示。
Android数据库升级不丢失数据解决方案 https://mp.csdn.net/mp_blog/creation/editor/124272815
实现了android数据库的基本操作和数据库升级时数据保留,基本的增删改查
主要介绍了Android SQLite数据库版本升级的管理实现的相关资料,这里提供实现代码帮助大家掌握这部分内容,需要的朋友可以参考下
SM3004 任课老师: 梁郁君 实验指导老师: 梁郁君 实验报告名称:实验10 Android数据存储与IO 学生姓名: 学号: 教学班: 递交日期: 签收人: 我申明,本报告内的实验已按要求完成,报告完全是由我个人完成,并没有...
在Android中,提供了三种数据存储的途径,和两种存储方式。 三种途径: l 系统配置(Shared Preferences): 这类应用主要是系统的配置信息的保存,比如我给程序界面设置了颜色,我想在下一次启动时还是能够保留...
做的第一个项目吧 后来这个被 下拉菜单的替换掉了 这个我就保留了 里面实现了选项卡的滑动(有9个选项卡 3个一组 也算是选项卡的嵌套) listview 动态添加 查找 删除数据 退出 等功能 有一些地方可能运行起来报错 和...
----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...
实现文件读写,可以将数据库内容存储到文件中,并且可以通过读取文件中的数据条目进行添加 文本编辑框自动记录程序最后输入的内容,下次启动依然保留 注意:在删除数据库后不能进行除显示外其他操作。
持久化技术则是提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换, Android系统中主要提供了3种方式用于简单地实现数据持久化功能, 即文件存储, SharePreference存储, 以及数据库存储. 当然你也可以将数据...
(2)针对跨域数据交互问题,指出并分析了跨域缓存交互问题出现的原因,通过在HTML5存储技术的基础上,重写LocalStorage,用移动端本地的Sqlite进行数据维护,实现跨域数据交互。 (3)针对页面自适应问题,本文结合...
实现文件读写,可以将数据库内容存储到文件中,并且可以通过读取文件中的数据条目进行添加 文本编辑框自动记录程序最后输入的内容,下次启动依然保留 注意:在删除数据库后不能进行除显示外其他操作。
Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主要是我对sql语言不熟悉)。而JavaWeb开发中有很多orm框架,但是想直接放到Android上用有些麻烦。...
带有Room数据库,视图模型和实时数据的Android体系结构组件 该示例展示了以下体系结构组件: 介绍 产品特点 该示例包含两个屏幕:交货清单和交货明细视图。 表示层 表示层由以下组件组成: 一个主要活动,处理2个...
Android MVP 您听说过MVP,对吗?... 演示者负责查询模型并更新视图,对用户交互做出React以更新模型。 视图:它仅负责以演示者决定的方式演示数据。 该视图可以通过“活动”,“片段”,任何Android小
LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)模式,并将我们平时开发常用的一些数据库功能进行封装,使得不用编写一行SQL语句就可以 完成各种建表和增删查改操作。我们使用的编译语言是面向...
并且为保留 Android 运行的效率,选择保留原有的本机数据结构缓存存储,即 每次需要存储数据时,在本机和远端服务器上各保存一份;需要请求数据时,先在本机缓存 中查看,如果没有再到远端服务器的数据库中查找。
增加greenDao的资产目录副本,即重新获取外部db文件功能增加greenDao数据库的升级功能,保留数据 重建mainActiity,由单击按钮替换,替换recycleview数据替换sqlite数据库。 2016/07/28更新 修正了目录结构,按照...