android版本更新数据覆盖,Android应用程序更新时如何处理多个数据库版本更改

谢谢你在这里阅读我的问题.

实际上,当我需要在表中为多个sq-lite版本添加一些行时,我对如何处理SQLite表有些困惑.

我谷歌的东西,发现这样的东西,我们必须在onUpgrade方法做alter table.

这将是工作顺序更新.

Suppose i have 3 devices they have below versions of database

1) 1st device = database version 1

2) 2nd device = database version 2

3) 3rd device = application not installed.

database version 1 = 2 columns

database version 2 = 2+2 columns

database version 3 = 4+2 columns.

所以在这里,如果我需要给我的Android应用程序用户更新,那么我必须做什么?

我有以下场景.

1) Updated application would be install in 3rd device where still application is not installed.

2) Application should be update from version 1 to version 3 (Device 1st).

3) Application should be update from version 2 to version 3 (Device 2nd).

在这里我可以了解如何处理3号场景,但我不知道如何处理第1和第2场景.

我如何编写代码,以便它适用于所有场景.

在创建数据库时,onUpgrade方法将仅调用数据库版本更改和onCreate调用.

谢谢任何帮助和建议将不胜感激.

解决方法:

根据您提到的内容(例如onUpgrade方法),我假设您使用的是SQLiteOpenHelper.

首先将数据库版本更新为3.

在onCreate(SQLiteDatabase db)中,更新代码,以便根据最新版本3模式创建所有表(例如,表具有col1,col2和col3).新安装将触发此代码,从而创建一个全新的v3表.

在onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)中,引用旧版本参数和新版本参数,并相应地更新已存在的表,例如:

if (oldVersion == 1 && newVersion = 2)

{

//Going from v1 to v2

db.execSQL("ALTER TABLE mytable ADD COLUMN col2 INTEGER");

}

if (oldVersion == 1 && newVersion = 3)

{

//Going from v1 to v3

db.execSQL("ALTER TABLE mytable ADD COLUMN col2 INTEGER");

db.execSQL("ALTER TABLE mytable ADD COLUMN col3 INTEGER");

}

if (oldVersion == 2 && newVersion = 3)

{

//Going from v2 to v3

db.execSQL("ALTER TABLE mytable ADD COLUMN col3 INTEGER");

}

当数据库版本与用户当前具有的版本不匹配时,将触发此代码.您知道它们具有的版本,因此可以相应地修改现有表格,使其达到与onCreate相同的定义.您当然可以在onUpgrade中执行任何操作,例如创建新表和插入/更新/删除数据.

标签:android,sqlite

来源: https://codeday.me/bug/20190612/1227027.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值