Android版本更新之本地数据库更新
最近上架了一个算法学习类APP,在更新应用版本时,发现数据库依旧没有更新,还是上一个版本的数据内容,遂把这方面的内容记录下来。
PS:本人处女作APP 《算法之家》 可以在豌豆荚、360手机助手、腾讯应用宝中下载安装~
如下是父类的构造函数,所有的数据库都是继承这个父类的。
public MyOpenHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
} //笔记
public MyOpenHelper(Context context, String name) {
super(context, name,null,VERSION);
// TODO Auto-generated constructor stub
} public MyOpenHelper(Context context) {
super(context, null,null,mVERSION);
// TODO Auto-generated constructor stub
} public MyOpenHelper(Context context, String name,int version) {
super(context, name, null, version);
// TODO Auto-generated constructor stub
} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub } @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub }
1、当我们使用new MyOpenHelper(context)去构造的时候,会经常性的执行子类中public void onCreate(SQLiteDatabase db)这个方法,因此这样可以不用更新,但是使用这样的方式去构造的数据库,用户不能update,不能insert,只能在构造的时候insert。。
2、当我们使用new MyOpenHelper(context,name)去构造的时候,只会执行一次子类中的onCreate方法,也就是说如果我们在以后升级应用时,想要更新此数据库中的内容,需要另寻他法,所以数据库的版本的重要性就体现出来了,也就是super(context, name,null,VERSION);的VERSION关键字,当系统发现该数据库版本比原应用的数据库版本高,则会自动调用onUpgrade方法,所以有了如下代码。
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub switch(oldVersion){
case 1:
Version2(db);
break;
case 2:
Version3(db);
break;
case 3:
break;
case 4:
break;
default:
System.out.println("default");
break; }
比如原数据库版本为1,此时就会执行case 1:的指令。
在修改数据库中需要添加这样几行代码
private void Version2(SQLiteDatabase db) {
// TODO Auto-generated method stub db.beginTransaction(); //改名数据库表
db.execSQL("alter table TABLE1 rename to TABLE2"); //新建表单
db.execSQL("create table TABLE1(XX,XX)"); //插入原有的数据
db.execSQL("insert into TABLE select * from TABLE2");
//如果增加了列属性,则使用双引号”” 来补充原来不存在的数据 //删除临时表单
db.execSQL("drop table TABLE2"); db.setTransactionSuccessful();
db.endTransaction(); }
如此,差不多了。
Android版本更新之本地数据库更新的更多相关文章
- Android 使用SQLite本地数据库
参考:http://blog.csdn.net/jianghuiquan/article/details/8569252 在Android平台上,集成了一个嵌入式关系型数据库—SQLite.以SQLi ...
- Android应用查看本地数据库
使用Android Studio 视图==>工具窗口 == >Device File Explorer ==> 文件在 data/data目录下,你的应用程序报名,右键save as ...
- Windows Phone本地数据库(SQLCE):13、更新数据(翻译)
这是“windows phone mango本地数据库(sqlce)”系列短片文章的第十三篇. 为了让你开始在Windows Phone Mango中使用数据库,这一系列短片文章将覆盖所有你需要知道的 ...
- Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作
一.前言 在手机中进行网络连接不仅是耗时也是耗电的,而耗电却是致命的.所以我们就需要数据库帮助我们存储离线数据,以便在用户未使用网络的情况下也可以能够使用应用的部分功能,而在需要网络连接的功能上采用提 ...
- 【转】Android动态破解微信本地数据库(EnMicroMsg.db)
最近在公司接了一个任务,需要在几百台手机上安装一个app,目的是获取微信里面的通讯录,并且定时的把他发送到我们的服务器上.当时依次尝试的如下几个方案: 1.通过群控,将好友截图发送到服务端(pytho ...
- Xamarin.Android 本地数据库 SQLiteDatabase 操作
目的:使用 SQLiteDatabase 创建本地数据库.表,并对数据进行增删改查操作. 引用命名空间: using Android.App; using Android.Widget; using ...
- android本地数据库,微信数据库WCDB for Android 使用实例
android本地数据库,微信数据库WCDB for Android 使用实例 Home · Tencent/wcdb Wikihttps://github.com/Tencent/wcdb/wiki ...
- Android数据库更新——上万条数据的插入
在实际情况下,很可能遇到会向一个表中插入10万条数据,而这样的数据库更新,如果用寻常的方式,在SQLiteOpenHelper.onUpdate()方法中不断的执行SQL语句,那么效率是可想而知的,甚 ...
- Android笔记之使用ImageView加载网络图片以及保存图片到本地并更新图库
ImageView显示网络图片 findViewById(R.id.btnLoad).setOnClickListener(new View.OnClickListener() { @Override ...
随机推荐
- wpa supplicant 保存 wifi 设置
wpa suppliclant使用wpa gui连接wifi后,下次开机的时,不能保存,需要从新手动进行连接. 自动保存方法: 配置文件/etc/wpa_supplicant.conf 添加 upda ...
- require,include,require_once,include_once的区别
最近面试时被问到,一时间还真没想到太多,仅仅回答了大概的几个,于是回来再确认一下. 以下内容为网络摘抄: ①作用及用法 可以减少代码的重复 include(_once)("文件的路径&qu ...
- input上传按钮 文字修改办法
解决思路是把input 放在文字的上边,弄成透明的,这样在点文字时,实际是点击了input,这样就实现了文件的上传. 具体代码: <style> #uploadImg{ font-size ...
- 移动端html页面布局
记录一下: ---------- 如果设计稿尺寸为 : 96px: 1. rem html{ font-size:62.5%; } 的情况下 : 4.8rem: 2. rem html{ font-s ...
- 原生js与css3结合的电风扇
最近学习了css3,就琢磨做些东西练练手,下面是自己写的一个电风扇,使用了原生js中的定时器和css3的一些属性 <!doctype html> <html lang="e ...
- math方法
1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.fl ...
- 函数nvl 和decode
decode(nvl(kkc.category, 'one'),'one','普通','two','精品','three','行业','four','白金')
- 15. 星际争霸之php设计模式--策略模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- Ruby(rails)win环境下安装
1.RubyInstaller 在RubyInstaller官网下载window版本安装,地址:http://rubyinstaller.org/downloads/ 执行安装程序,勾选Add Ru ...
- 批处理命令——choice
[1]choice命令简介 使用此命令可以提示用户输入一个选择项,根据用户输入的选择项再决定执行具体的过程. 使用时应该加/c:参数,c: 后应写提示可输入的字符或数字,之间无空格.冒号是可选项. 使 ...