做Android应用,不可避免的会与SQLite打交道。随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了。

SQLite提供了ALTER TABLE命令,允许用户重命名或添加新的字段到已有表中,但是不能从表中删除字段。

并且只能在表的末尾添加字段,比如,为 Subscription添加两个字段:

复制代码代码如下:

ALTER TABLE Subscription ADD COLUMN Activation BLOB;
ALTER TABLE Subscription ADD COLUMN Key BLOB;

另外,如果遇到复杂的修改操作,比如在修改的同时,需要进行数据的转移,那么可以采取在一个事务中执行如下语句来实现修改表的需求。

1. 将表名改为临时表

复制代码代码如下:

ALTER TABLE Subscription RENAME TO __temp__Subscription;

2. 创建新表

复制代码代码如下:

CREATE TABLE Subscription (OrderId VARCHAR(32) PRIMARY KEY ,UserName VARCHAR(32) NOT NULL ,ProductId VARCHAR(16) NOT NULL);

3. 导入数据

复制代码代码如下:

INSERT INTO Subscription SELECT OrderId, “”, ProductId FROM __temp__Subscription;

或者

复制代码代码如下:

INSERT INTO Subscription() SELECT OrderId, “”, ProductId FROM __temp__Subscription;

* 注意 双引号”” 是用来补充原来不存在的数据的
4. 删除临时表

复制代码代码如下:

DROP TABLE __temp__Subscription;

通过以上四个步骤,就可以完成旧数据库结构向新数据库结构的迁移,并且其中还可以保证数据不会应为升级而流失。

当然,如果遇到减少字段的情况,也可以通过创建临时表的方式来实现。

转载于:https://www.cnblogs.com/chenlong-50954265/p/5848489.html

基于Android SQLite的升级详解相关推荐

  1. Android SQLite (三 ) 全面详解(一)

    官网 SQLite是一款轻型的数据库,是关系型数据库(RDBMS)管理系统,它包含在一个相对小的C库中.目前在很多嵌入式产品中使用了它,它占用资源非常 的低,在嵌入式设备中,可能只需要几百K的内存就够 ...

  2. 基于Android P版本PKMS详解二

    由以上代码可知,`PKMS` 扫描了很多目录,下面列举几个重点说明: ✨ /system/framework :该目录中的文件都是系统库,例如:framework.jar.services.jar.f ...

  3. 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解

    Android编程之SQLite数据库操作方法详解 发布时间:2020-09-07 12:33:04 来源:脚本之家 阅读:85 作者:低调小一 本文实例讲述了Android SQLite数据库操作方 ...

  4. android studio gradle3.3,Android studio 3.2 升级详解及Gradle配置

    Android studio 3.2 升级详解及Gradle配置 发布时间:2018-09-29 15:36, 浏览次数:618 , 标签: Android studio Gradle 一直在使用An ...

  5. Android面试Hash原理详解二

    Hash系列目录 Android面试Hash原理详解一 Android面试Hash原理详解二 Android面试Hash常见算法 Android面试Hash算法案例 Android面试Hash原理详解 ...

  6. OTA升级详解(二)

    青,取之于蓝,而青于蓝: 冰,水为之,而寒于水. 出自荀子<劝学篇> 本章说明       上篇 OTA升级详解(一)主要讲到OTA的一些基本知识,本篇主要内容为详解OTA升级包的制作过程 ...

  7. Android NFC卡实例详解

    Android NFC卡实例详解 公司最近在做一个NFC卡片的工程,经过几天的时间,终于写了一个Demo出来,在此记录下在此过程中遇到的问题.由于之前本人是做iOS的,Android写起来并不是那么的 ...

  8. android常用技术网站收藏过的网址 给 Android 开发者的 RxJava 详解 Android设备标识-没有完美的解决方案-只有取舍 - 小彼得的专栏 - 博客频道 - CSDN.NET

    收藏过的网址 http://www.jianshu.com/p/a7b36d682b6f?ref=myread  Android插件化快速入门与实例解析 http://www.cnblogs.com/ ...

  9. Android Gradle 自定义Task 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

最新文章

  1. 如何用TensorFlow和TF-Slim实现图像分类与分割
  2. Android 实用工具Hierarchy Viewer实战
  3. ahk编程_AHK编程可视化的实现
  4. 一天搞定CSS:BFC布局与普通文档流布局比较--15
  5. python逻辑题_这道逻辑题 用 Python 代码 如何实现?
  6. php七牛分片上传_ThinkPHP实现JavaScript上传大视频到七牛云实例
  7. 64位系统使用Access 数据库文件的彻底解决方法
  8. linux 设备驱动总结,linux设备驱动归纳总结.doc
  9. struct、union、enum and sizeof
  10. leetcode @python 130. Surrounded Regions
  11. 详解如何提取Unity素材,源码
  12. kali更新sqlmap命令以及更新后无法使用的解决方法
  13. P1505 [国家集训队]旅游 (树链剖分)
  14. 【SpringMVC】编程式事务控制,基于 XML 的声明式事务控制,基于注解的声明式事务控制
  15. c++builder 6.0中OnCliked= fun实现的原理
  16. C语言零基础项目:打字母游戏!详细思路+源码分享
  17. 高数(下) 第八章:空间解析集合与向量代数
  18. c语言换零钱程序,换零钱问题。将一元钱换成1分,2分,或5分的零钱有多少换法。vb编程...
  19. 使用Arduino制作自动硬币分拣机
  20. FPGA信号处理--多相滤波器(二)

热门文章

  1. 保险业尚不能完全发挥CRM优势 需强化
  2. 当下常用的webpack版本_细说 webpack系列 1. 为什么要选择 webpack
  3. java 反射代价_Java反射机制
  4. 哇 跨行竞争 Python竟能替代PS完成海报设计
  5. 单片机8位抢答器实训机电报告_CD4511八路抢答器实验报告-
  6. cad画流程图的插件_CAD制图太慢?62款辅助插件汇总,款款精品,效率提升80%
  7. php去掉关联数组,php如何删除关联数组
  8. 二分图 ---- 树的二分图性质 2020icpc 济南 J Tree Constructer(构造)
  9. python搜题程序_智慧树Python程序设计基础搜题公众号
  10. 有关计算机辅助教学方面的问题,浅析高校计算机辅助教学应用的有关问题