在Android中afinal框架下实现sqlite数据库版本升级的办法

     上一篇文章采用的是SQLiteOpenHelper中的onUpgrade方法实现数据库的升级。

     首先获取Context:

private Context  mContext=this;


然后实现FinalDb内的静态方法:

FinalDb.create(mContext,"afinal.db",true,2,this);	

 

 实现FinalDb的DbUpdateListener接口中的方法:


 

   

@Overridepublic void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {// TODO Auto-generated method stubtry {InputStream in = mContext.getAssets().open("patch.sql");BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));String sqlUpdate = null;while ((sqlUpdate = bufferedReader.readLine()) != null) {if (!TextUtils.isEmpty(sqlUpdate)) {db.execSQL(sqlUpdate);}}bufferedReader.close();in.close();} catch (SQLException e) {System.out.println(e.toString());} catch (IOException e) {System.out.println(e.toString());}	}


时间紧迫,没有写太多,大家可以自己研究。

 

转载于:https://www.cnblogs.com/hainange/p/6153535.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL备份原理详解

备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之百的数据(取决于备份周期),但至少能将损失降到最低。衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO),前者重点关…

计时器小程序——由浅入深实例讲解

本菜在实现简单的计时器过程中遇到问题的一些成长笔记,有不完整观点的话请多多见谅,也看了众多大神的博客才整理的笔记,下面来实现个人写的小程序。 首先第一个实例(很简单): winform窗体包含两个控件&…

linux c之通过管道实现兄弟间进程通信:

1、兄弟间进程通信: 父进程创建管道,并使用fork函数创建2个进程,在第一个子进程发消息到第二个子进程,第2个子进程读取消息并处理,在父进程中不使用管道通信,所以什么都不做,直接关闭管道两端并…

理解 Azure AD 安全默认值设置

为了保护广大的Microsoft 365用户的安全,Azure AD在某些情况下会启用安全默认值,就是要求所有的账号都启用MFA。MFA的全称是 Multi-factor Authentication,中文翻译为多因子身份验证,就是说除了账号密码之外,添加额外的…

mongodb spring 超时时间_拥抱NoSQL--谈Spring Data MongoDB的简单使用

先说说MongoDB是什么。MongoDB官网也有各语言所用的API,当然也有Java的了。但是平日写的东西大部分是基于Spring框架的,自然希望对于数据库的操作也在Spring的掌控之下。前几日才Spring的官网看到了SPRING DATA MONGODB,对此很感兴趣稍微试了…

能抗 6 级风的「拇指伞」,晴雨两用、揣兜就走!

▲ 点击查看每到这个季节,天气就开始对人类不友好了:要么万里无云,紫外线爆表;要么忽然乌云密布,狂风暴雨。出门带伞,谁不知道,说着简单,可是普通的雨伞大小很尴尬,手里不…

SecureCRT 中 python 命令行使用退格键(backspace)出现 ^H 解决办法

选项-->会话选项-->映射键 勾选“其他映射”中的两个选择框 转载于:https://www.cnblogs.com/RUReady/p/6165289.html

设计模式:策略模式

本文翻译自Design Patterns: The Strategy Pattern 目前为止我们已经在这个系列中接触了三个设计模式。我们定义了4种类型的设计模式。在这篇文章中,我将讲解 策略模式,这是属于行为类别的设计模式的。 你可能会有一个疑问:我们什么时候该使用…

云计算基本概念

IT技术行业最不缺少的就是概念的炒作,今天出来个新技术名词,明天又出来个新技术名词,搞的从业人员焦虑不堪,生怕被这个时代所抛弃;但是人的精力是有限的,不可能什么都去学习,与其整天被这一帮发…

通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存...

很久没有更新dapr系列了。今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star目录:一、通过Dapr实现一个简单的基于.net的微服务电商…

geotif 添加坐标_python – 如何获取geotif中单元格的坐标?

使用仿射变换矩阵,将像素坐标映射到世界坐标.例如,使用affine包. (还有其他方法可以使用简单的数学方法.)from affine import Affinefname /path/to/raster.tif以下是获得仿射变换矩阵T0的两种方法.例如,使用GDAL / Python:from osgeo import gdalds gdal.Open(pa…

年纪都这么大了,还在倒班工作......

1 这么大年纪都在倒班工作(素材来源网络,侵删)▼2 原来,这就是命啊(素材来源网络,侵删)▼3 天啊,都是什么狗血剧情?(素材来源网络,侵删&#xf…

VB中使用GDI+进行图像缩放的实例

VISUAL BASIC(VB)对图形图像的处理一直以来是弱项,并受到很多人的垢病。关于图形图像的放大缩小,一般使用PICTUREBOX的PAINTPICTURE方法来处理。但这个处理方法最大的问题就是图像的失真。比方说图像中原来有网格线的,…

javascript的关于刷新页面给出提示框的代码

// 页面刷新事件 ,或者关闭事件的3中方法!测试都可以!参考官方文档: https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunloadhttps://developer.mozilla.org/en-US/docs/Web/API 方法1:window.onb…

JavaScript格式化数字显示格式

为什么80%的码农都做不了架构师?>>> JavaScript格式化数字显示格式 /** * 格式化数字显示方式 * 用法 * formatNumber(12345.999,#,##0.00); * formatNumber(12345.999,#,##0.##); * formatNumber(123,000000); * param num * param pattern */ func…

linux c之使用#define定义多行函数总结

1、用 define的特点 函数:会带来额外的开销,开辟一片栈空间,记录返回地址,将形参压栈,从函数返回还要释放堆栈,这种开销大,函数的参数必须被声明为一种特定的类型。 宏定义:代…

tensorflow去掉某一维度_在Python中解压缩(取消堆栈)一个输入(占位符),在tensorflow中有一个None维度...

我正在尝试使用具有不同时间步长(不同帧数)的输入的LSTM. rnn.static_rnn的输入应该是tf(不是tf!)的序列.所以,我应该将输入转换为序列.我试图使用tf.unstack和tf.split,但是他们都需要知道输入的确切大小,而我的输入的一个维度(时间步长)正在通过不同的输入改变.以…

js点击图片查看大图,并可以拖动,且滚动滑轮放大缩小

方法一:此方法在页面没有滚动条时无法缩放 JQuery function hideMax(){$(".MAX_div").remove();$("#Cover_Div").hide();}function showMax(url){$("#Cover_Div").show();var Imagefunction(){return document.createElement("i…

太努力工作的年轻人,都有病吧!?

全世界只有3.14 % 的人关注了爆炸吧知识前段时间,有人这样问超模君:为什么年轻人明明没有老一辈辛苦,病却反而更多了?在这个物质丰富的年代,如果你退出这场无限内卷的社畜游戏,选择躺平就会活得很轻松&…