Android数据库升级

if (instance == null) {

instance = new DBHelper(context);

}

return instance;

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(SQL.CREATE_TABLE_FAVORITE);

// 若不是第一个版本安装,直接执行数据库升级

// 请不要修改FIRST_DATABASE_VERSION的值,其为第一个数据库版本大小

final int FIRST_DATABASE_VERSION = 1000;

onUpgrade(db, FIRST_DATABASE_VERSION, DATABASE_VERSION);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// 使用for实现跨版本升级数据库

for (int i = oldVersion; i < newVersion; i++) {

switch (i) {

default:

break;

}

}

}

}

其中的SQL的建表语句为:

public class SQL {

public static final String T_FAVORITE = “favorite”;

public static final String CREATE_TABLE_FAVORITE =

"CREATE TABLE IF NOT EXISTS " + T_FAVORITE + “(” +

"id VARCHAR PRIMARY KEY, " +

"title VARCHAR, " +

"url VARCHAR, " +

"createDate VARCHAR " +

“)”;

}

(2)v2.0:DATABASE_VERSION=1001,在favorite表添加1个deleted字段

public class DBHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = “mall.db”;

private static final int DATABASE_VERSION = 1001;

private static DBHelper instance = null;

public DBHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

public synchronized static DBHelper getInstance(Context context) {

if (instance == null) {

instance = new DBHelper(context);

}

return instance;

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(SQL.CREATE_TABLE_FAVORITE);

// 若不是第一个版本安装,直接执行数据库升级

// 请不要修改FIRST_DATABASE_VERSION的值,其为第一个数据库版本大小

final int FIRST_DATABASE_VERSION = 1000;

onUpgrade(db, FIRST_DATABASE_VERSION, DATABASE_VERSION);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// 使用for实现跨版本升级数据库

for (int i = oldVersion; i < newVersion; i++) {

switch (i) {

case 1000:

upgradeToVersion1001(db);

break;

default:

break;

}

}

}

private void upgradeToVersion1001(SQLiteDatabase db){

// favorite表新增1个字段

String sql1 = “ALTER TABLE “+SQL.T_FAVORITE+” ADD COLUMN deleted VARCHAR”;

db.execSQL(sql1);

}

}

(3)v3.0:DATABASE_VERSION=1002,在favorite表中添加message和type字段

public class DBHelper extends SQLiteOpenHelper {

private static final String DATABASE_NAME = “mall.db”;

private static final int DATABASE_VERSION = 1002;

private static DBHelper instance = null;

public DBHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

public synchronized static DBHelper getInstance(Context context) {

if (instance == null) {

instance = new DBHelper(context);

}

return instance;

}

@Override

public void onCreate(SQLiteDatabase db) {

db.execSQL(SQL.CREATE_TABLE_FAVORITE);

// 若不是第一个版本安装,直接执行数据库升级

// 请不要修改FIRST_DATABASE_VERSION的值,其为第一个数据库版本大小

final int FIRST_DATABASE_VERSION = 1000;

onUpgrade(db, FIRST_DATABASE_VERSION, DATABASE_VERSION);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// 使用for实现跨版本升级数据库

for (int i = oldVersion; i < newVersion; i++) {

switch (i) {

case 1000:

upgradeToVersion1001(db);

break;

case 1001:

upgradeToVersion1002(db);

break;

default:

break;

}

}

}

private void upgradeToVersion1001(SQLiteDatabase db){

// favorite表新增1个字段

String sql1 = “ALTER TABLE “+SQL.T_FAVORITE+” ADD COLUMN deleted VARCHAR”;

db.execSQL(sql1);

}

private void upgradeToVersion1002(SQLiteDatabase db){

尾声

如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

这里,笔者分享一份从架构哲学的层面来剖析的视频及资料给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

大厂面试真题

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《2019-2021字节跳动Android面试历年真题解析》


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-7DjokVaN-1714803342806)]

《2019-2021字节跳动Android面试历年真题解析》

[外链图片转存中…(img-w2czc3ym-1714803342806)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。 《Android开发艺术探索》侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。而对于高级开发者来说,仍然可以从《Android开发艺术探索》的知识体系中获益。 《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。, 《 Android开发艺术探索》侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。而对于高级开发者来说,仍然可以从《Android开发艺术探索》的知识体系中获益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值