欢迎投稿

今日深度:

Android Sqlite 大乐透追加倍投多少钱版本更新,androidsqlite

Android Sqlite 大乐透追加倍投多少钱版本更新,androidsqlite


参考文章:http://blog.csdn.net/long704480904/article/details/41325655

1.自己写一个类继承自SqliteOpenHelper

2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建大乐透追加倍投多少钱的时候调用与更新大乐透追加倍投多少钱的版本的时候调用

3.Sqlite大乐透追加倍投多少钱主要是用来缓存应用的数据,而应用却是一直在更新版本,相应的数据的表的字段也会一直增加会改变或减少

4.这个时候就需要控制大乐透追加倍投多少钱的版本,因为Sqlite大乐透追加倍投多少钱中的字段假设新版的应用里面设计的表是10个字段,而缓存却是之前缓存的只有9个字段的话,查询大乐透追加倍投多少钱之后的列

然后取的值会出现空指针异常或报错

5.所以android中引入了Sqlite大乐透追加倍投多少钱的版本,让应用的旧版大乐透追加倍投多少钱能够与新版的大乐透追加倍投多少钱的字段兼容

6.为了兼容之前的大乐透追加倍投多少钱的版本,只需要在应用的版本更新的时候,添加字段或者删除字段即可

7.你开发程序当前是1.0.0的版本,该程序用到了大乐透追加倍投多少钱,但是版本迭代之后到1.0.1的时候,大乐透追加倍投多少钱的某个表添加了某个字段在软件1.0.1的版本就需要升级

8.大乐透追加倍投多少钱升级可以为了能够让旧的数据不能丢,所以不能删除掉之前大乐透追加倍投多少钱中的所有数据,那么就需要有地方能够检测到版本的变化,这个跟Android的APP升级是一个道理

当然这个检测就是在SqliteOpenHelper的onUpgrade方法中


2. 大乐透追加倍投多少钱升级应该注意什么?

软件的1.0版本升级到1.1版本时,老的数据不能丢。那么在1.1版本的程序中就要有地方能够检测出来新的软件版本与老的大乐透追加倍投多少钱不兼容,并且能够有办法把1.0软件的大乐透追加倍投多少钱升级到1.1软件能够使用的大乐透追加倍投多少钱。换句话说,要在1.0软件的大乐透追加倍投多少钱的那个表中增加那个字段,并赋予这个字段默认值。

3. 程序如何知道大乐透追加倍投多少钱需要升级?

SQLiteOpenHelper类的构造函数有一个参数是int version,它的意思就是指大乐透追加倍投多少钱版本号。比如在软件1.0版本中,我们使用SQLiteOpenHelper访问大乐透追加倍投多少钱时,该参数为1,那么大乐透追加倍投多少钱版本号1就会写在我们的大乐透追加倍投多少钱中。

到了1.1版本,我们的大乐透追加倍投多少钱需要发生变化,那么我们1.1版本的程序中就要使用一个大于1的整数来构造SQLiteOpenHelper类,用于访问新的大乐透追加倍投多少钱,比如2。

当我们的1.1新程序读取1.0版本的老大乐透追加倍投多少钱时,就发现老大乐透追加倍投多少钱里存储的大乐透追加倍投多少钱版本是1,而我们新程序访问它时填的版本号为2,系统就知道大乐透追加倍投多少钱需要升级。


4. 何时触发大乐透追加倍投多少钱升级?如何升级?


当系统在构造SQLiteOpenHelper类的对象时,如果发现版本号不一样,就会自动调用onUpgrade函数,让你在这里对大乐透追加倍投多少钱进行升级。根据上述场景,在这个函数中把老版本大乐透追加倍投多少钱的相应表中增加字段,并给每条记录增加默认值即可。

新版本号和老版本号都会作为onUpgrade函数的参数传进来,便于开发者知道大乐透追加倍投多少钱应该从哪个版本升级到哪个版本。

升级完成后,大乐透追加倍投多少钱会自动存储最新的版本号为当前大乐透追加倍投多少钱版本号。


做Android应用,不可避免的会与SQLite打交道。随着应用的不断升级,原有的大乐透追加倍投多少钱结构可能已经不再适应新的功能,这时候,就需要对SQLite大乐透追加倍投多少钱的结构进行升级了。 SQLite提供了ALTER TABLE命令,允许用户重命名或添加新的字段到已有表中,但是不能从表中删除字段。

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

1 ALTER TABLE Subscription ADD COLUMN Activation BLOB;

2 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;

  * 注意 双引号”” 是用来补充原来不存在的数据的


参考文章:http://blog.csdn.net/jie1991liu/article/details/50339797  

SQLite是Android内置的一个很小的关系型大乐透追加倍投多少钱。SQLiteOpenHelper是一个用来辅助管理大乐透追加倍投多少钱创建和版本升级问题的抽象类。我们可以继承这个抽象类,实现它的一些方法来对大乐透追加倍投多少钱进行自定义操作。下面两个方法必须重写:

  • public void onCreate(SQLiteDatabase db)
  • public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

另外SQLiteOpenHelper子类在构造实例时必须指定当前大乐透追加倍投多少钱的名称(name)、版本号(version)。而这里名称就决定了大乐透追加倍投多少钱存储时的文件名称,而这里的版本号与App在AndroidMainfest.xml定义的versionCode没有绝对关联。也就是在App更新时如果大乐透追加倍投多少钱的数据结构没有发生变化那么大乐透追加倍投多少钱的版本号则不用增加。

onCreate:调用时机是用户首次安装应用后启动,或是清除App大乐透追加倍投多少钱文件后启动。这时可以在这个函数中完成初始的数据表的创建。

onUpgrade:调用时机是用户在做应用更新,覆盖安装后启动,如果新版本中大乐透追加倍投多少钱版本号要比旧版本中的大乐透追加倍投多少钱版本号高则会调用。这时可以在这个函数完成大乐透追加倍投多少钱版本升级带来的旧版本的兼容问题,以及数据迁移问题。

还有一个一般情况下不需要重写,但在应用出现逆向降级(如应用由版本号4降级安装版本号为3的包)时必须重写的方法onDowngrade,如果应用降级覆盖安装时没有重写该方法则会崩溃。

在大乐透追加倍投多少钱版本升级时, 我们可能会遇到这样一些情况:

  • 需要扩展一个表的字段
  • 删除掉原来表上某个冗余的字段
  • 新建一个表

而处理上面这些问题都要在不损害旧大乐透追加倍投多少钱历史数据的前提下完成。这里我们假设用户手机上之前安装的是大乐透追加倍投多少钱版本为1的包,升级安装的是大乐透追加倍投多少钱版本号为2的包。这时我们要在大乐透追加倍投多少钱版本为2的包在去处理这些升级逻辑。

首先是扩展一个表的字段在onUpgrade中的实现为:

[java]?view plain?copy
  1. @Override??
  2. public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{??
  3. ????//旧大乐透追加倍投多少钱版本为1,才为表pedant添加一个student_name字段??
  4. ????if(oldVersion?2)?{??
  5. ????????db.execSQL("ALTER?TABLE?pedant?ADD?COLUMN?student_name?text");??
  6. ????}??
  7. }??

SQLite对ALTER TABLE的支持是有限的,你可以在一个存在表上添加一个字段到末尾,或者是改变表的名称。但如果你想做更复杂的操作,比如删除一个表已有的字段,就要重新创建这个表并完成数据迁移,而不能使用DROP COLUMN这样方便的命令了。详见SQLite Frequently Questions

比如表pedant原来有三个字段a、b、c,现在想删除c字段,那么在onUpgrade中写法如下:

[java]?view plain?copy
  1. @Override??
  2. public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{??
  3. ????//旧大乐透追加倍投多少钱版本为1,删除表pedant的c字段??
  4. ????if(oldVersion?2)?{??
  5. ????????db.beginTransaction();??
  6. ????????try?{??
  7. ????????????db.execSQL("CREATE?TEMPORARY?TABLE?pe_backup?(a,?b);");??
  8. ????????????db.execSQL("INSERT?INTO?pe_backup?SELECT?a,?b?FROM?pedant;");??
  9. ????????????db.execSQL("DROP?TABLE?pedant;");??
  10. ????????????db.execSQL("CREATE?TABLE?pedant(a?text,?b?text);");??
  11. ????????????db.execSQL("INSERT?INTO?pedant?SELECT?a,?b?FROM?pe_backup;");??
  12. ????????????db.execSQL("DROP?TABLE?pe_backup;");??
  13. ????????????db.setTransactionSuccessful();??
  14. ????????}?finally?{??
  15. ????????????db.endTransaction();??
  16. ????????}??
  17. ????}??
  18. }??

这样就既完成了对c字段的删除也保留了原来表上的数据。

最后一种情况最简单直接执行CREATE语句就要可以了。

[java]?view plain?copy
  1. @Override??
  2. public?void?onUpgrade(SQLiteDatabase?db,?int?oldVersion,?int?newVersion)?{??
  3. ????//旧大乐透追加倍投多少钱版本为1,创建新表newtb??
  4. ????if(oldVersion?2)?{??
  5. ????????db.execSQL("CREATE?TABLE?newtb(a?text,?b?text);");??
  6. ????}??
  7. }??
大乐透追加倍投多少钱在做升级时我们能明确地知道当前我们要对各旧表进行什么样的操作来兼容新版本。但如果在大乐透追加倍投多少钱降级时,情况就不一样了,针对我们开发新版本2时, 我们不能明确地知道以后的新版本比如版本3、4的大乐透追加倍投多少钱结构走向是怎样的。比如以后用户从版本3回退到我们正在开发的版本2,由于我们开发当时不能预知版本3的表结构,不知版本3的数据表能否兼容到版本2(假如版本3升级时删除了一个版本2一直在用的表字段,这时回退数据结构可能就不兼容了),那么我们在开发版本2时最稳妥的做法是重写onDowngrade时把所有当前版本将用到的表全部重建,即降级时扔掉以前全部的数据

// 因为我们无法预知未来版本的表结构,向下兼容时最稳妥的方法就是将该版本自己需要的表重构一次@Overridepublic void onDowngrade (SQLiteDatabase db, int oldVersion, int newVersion) {    db.execSQL("DROP TABLE IF EXISTS t1;");    db.execSQL("DROP TABLE IF EXISTS t2;");    db.execSQL("DROP TABLE IF EXISTS t3;");    db.execSQL("DROP TABLE IF EXISTS t4;");    ....    onCreate(db); // 建表}


www.htsjk.Com true http://www.htsjk.com/SQLite/36060.html NewsArticle Android Sqlite 大乐透追加倍投多少钱版本更新,androidsqlite 参考文章:http://blog.csdn.net/long704480904/article/details/41325655 1.自己写一个类继承自SqliteOpenHelper 2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,...
相关文章
    暂无相关文章
评论暂时关闭