原始完成于:2015-04-27 19:28:22

提供一种思路,优雅的处理Android数据库升级的问题,直接上代码:

 1 package com.example.databaseissuetest;
2
3 import android.content.Context;
4 import android.database.sqlite.SQLiteDatabase;
5 import android.database.sqlite.SQLiteOpenHelper;
6 import android.text.TextUtils;
7 import android.util.Log;
8
9 public class DatabaseHelper extends SQLiteOpenHelper {
10 public static final String DB_NAME = "test_db";
11
12 private static final String[] COL_SQLS = {
13 "create table test_tb (id integer primary key autoincrement, name text, age int)",
14 "alter table test_tb add class text",
15 "alter table test_tb add friends integer default 3",
16 };
17
18 public DatabaseHelper(Context context) {
19 super(context, DB_NAME, null, COL_SQLS.length);
20 Log.e("David", "DatabaseHelper");
21 }
22
23 @Override
24 public void onCreate(SQLiteDatabase db) {
25 Log.e("David", "onCreate");
26 onUpgrade(db, 0, COL_SQLS.length);
27 }
28
29 @Override
30 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
31 Log.e("David", "onUpgrade oldVersion = " + oldVersion);
32 Log.e("David", "onUpgrade newVersion = " + newVersion);
33 for (int i = oldVersion; i < COL_SQLS.length; i++) {
34 String sql = COL_SQLS[i];
35 if (!TextUtils.isEmpty(sql)) {
36 db.execSQL(sql);
37 }
38 }
39 }
40 }

优雅的处理Android数据库升级的问题的更多相关文章

  1. Android数据库升级

    随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...

  2. Android 数据库升级解决方案

    转自:http://blog.csdn.net/leehong2005/article/details/9128501 请考虑如下情况: 在数据库升级时,不同版本的数据库,他们定义的表结构完全可能是不 ...

  3. Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())[4]

    数据库版本升级对软件的管理操作. 我们手机经常会收到xxx软件升级什么的提醒,你的软件版本更新,同时你的数据库对应的版本也要相应的更新. 数据库版本更新需要主要的问题: 软件的1.0版本升级到1.1版 ...

  4. Android数据库升级、降级、创建(onCreate() onUpgrade() onDowngrade())的注意点

    以下内容可以作为面试官在面试的时候的问题,感觉比较好,是比较常用的知识点,可以用来考察基础是否扎实. 也可以程序猿学习.开发中的注意点.因为稍微不注意,就有可能导致数据库不能用. DBAdapter. ...

  5. Android数据库升级不丢失数据解决方案

    在Android开发中,sqlite至关重要,增删查改不多说,难点在于,1,并发,多个线程同时操作数据库.2,版本升级时,如果数据库表中新加了个字段,如何在不删除表的情况下顺利过渡,从而不丢失数据. ...

  6. Android数据库升级实例

    第一部分 Andoird的SQLiteOpenHelper类中有一个onUpgrade方法.帮助文档中只是说当数据库升级时该方法被触发.经过实践,解决了我一连串的疑问: 1. 帮助文档里说的“数据库升 ...

  7. Android 数据库升级中数据保持和导入已有数据库

    一.数据库升级: 在我们的程序中,或多或少都会涉及到数据库,使用数据库必定会涉及到数据库的升级,数据库升级带来的一些问题,如旧版本数据库的数据记录的保持,对新表的字段的添加等等一系列问题,还记得当我来 ...

  8. Android数据库升级,数据不丢失解决方案

    假设要更新TableC表,建议的做法是: 1) 将TableC重命名为TableC_temp SQL语句可以这样写:ALERT TABLE TableC RENAME TO TableC_temp; ...

  9. android数据库升级的措辞

    在基类table增加upgrade操作: public abstract class DbBaseTable { private static final String TAG = "DbB ...

随机推荐

  1. 数据库中 dbo是什么意思

    亲当你在用sql 自动生成查询等sql 语句的时候 还记得 from 后边那一大串嘛 比如 [IWMS].[DBO].[CARTON] 一直我都对这个东西懵懵懂懂的 最近一直在学习存储过程,正好想起来 ...

  2. VS 解决方案管理器和 编辑窗口同步 联动

    对于题目的解释就是   当我点击一下解决方案管理器中的 某一个文档时, 编辑窗口会联动的   同步到对应的窗口。之前好像被我无意中关掉了,今天重新建立一个项目无意中发现怎么设置了 如果想点击右边的文档 ...

  3. 微信中修改title

    //需要jQuery.zepto版 function weixinTitle(){ var $body = $('body'); document.title = 'title'; // hack在微 ...

  4. C++ 学习笔记(3) —— 內联函数

    内联函数的用处: 用空间换取时间,在调用时不用每次都写调用的汇编. 什么时候内联: 比较小的函数:只有两三行 在循环里循环调用的函数 什么时候不内联: 比较大的函数,2.30行的 递归的函数

  5. POJ - 1132Border

    POJ - 1132Border Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u Descrip ...

  6. 构建高性能的ASP.NET应用程序

    看见大标题的时候,也许各位看官会自然而然的联想到如何在设计阶段考虑系统性能问题,如何编写高性能的程序代码.关于这一点,大家可以在MSDN和相关网站上找到非常多的介绍,不过大多是防患于未难,提供的是在设 ...

  7. Web开发的常见面试题HTML和HTML5等

    作为一名前端开发人员,HTML,HTML5以及网站优化都是必须掌握的技术,下面列举一下HTML, HTML5, 网站优化等常见的面试题: HTML常见面试题: 1. 什么是Semantic HTML( ...

  8. 161214、oracle查询表信息

    1.查找表的所有索引(包括索引名,类型,构成列): select t.*,i.index_type from user_ind_columns t,user_indexes i where t.ind ...

  9. 2016年12月23日 星期五 --出埃及记 Exodus 21:18

    2016年12月23日 星期五 --出埃及记 Exodus 21:18 "If men quarrel and one hits the other with a stone or with ...

  10. llinux 压缩 解压

    1.zip  1) 将文件夹 mydir 压缩为 mydir.zip zip -r mydir.zip mydir 2) 将文件 one.two 压缩到 ot.zip zip -r ot.zip on ...