Android中SQLiteOpenHelper类的onUpgrade方法的作用
结合另外一篇文档学习:
http://lzd20021683.iteye.com/blog/1396292 SQLiteOpenHelper类与自动升级数据库
Andoird的SQLiteOpenHelper类中有一个onUpgrade方法。帮助文档中只是说当数据库升级时该方法被触发。经过实践,解决了我一连串的疑问:
1. 帮助文档里说的“数据库升级”是指什么?
你开发了一个程序,当前是1.0版本。该程序用到了数据库。到1.1版本时,你在数据库的某个表中增加了一个字段。那么软件1.0版本用的数据库在软件1.1版本就要被升级了。
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。//关键!!!
例如 文档SQLiteOpenHelper类与自动升级数据库 中的例子:
////////////////////////////////////////////////////////////////////////////////
// 创建了一个DatabaseHelper对象,只执行这句话是不会创建或打开连接的DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db");
//调用构造函数:
public DatabaseHelper(Context context, String name){ this(context,name,VERSION/*默认版本*/); }
// 只有调用了DatabaseHelper的getWritableDatabase()方法或者getReadableDatabase()方法之后,才会创建或打开一个连接
SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();
////////////////////////////////////////////////////////////////////////////////
// 调用另外一个构造函数,升级数据库
DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this, "test_yangyz_db", 2/*新版本*/);
// 得到一个只读的SQLiteDatabase对象
SQLiteDatabase sqliteDatabase = dbHelper.getReadableDatabase();
当我们的1.1新程序读取1.0版本的老数据库时,就发现老数据库里存储的数据库版本是1,而我们新程序访问它时填的版本号为2,系统就知道数据库需要升级。
4. 何时触发数据库升级?如何升级?
当系统在构造SQLiteOpenHelper类的对象时,如果发现版本号不一样,就会自动调用onUpgrade函数,让你在这里对数据库进行升级。根据上述场景,在这个函数中把老版本数据库的相应表中增加字段,并给每条记录增加默认值即可。
新版本号和老版本号都会作为onUpgrade函数的参数传进来,便于开发者知道数据库应该从哪个版本升级到哪个版本。
升级完成后,数据库会自动存储最新的版本号为当前数据库版本号。
转自:http://www.voidest.com/edward/archives/29
发表评论
-
资料上传备份
2012-07-02 07:28 0对付对付对付对付 -
Android-sharedUserId数据权限
2012-05-02 10:16 1405Android-sharedUserId数据权限 An ... -
Android Service学习之本地服务
2012-04-18 10:28 794转: Android Service学习之本地服务 htt ... -
match_parent和fill_parent的区别 .
2012-02-18 11:49 1777match_parent和fill_parent的区别 有 ... -
Android启动各种系统服务线程
2012-02-09 10:59 1892Android启动各种系统服务 ... -
android
2012-02-08 09:22 0Android数据库内容变化的监听 首先介绍内容监 ... -
在线升级Android应用程序的思路
2012-02-07 11:34 816在线升级Android应用程序的思路 http://www. ... -
Android数据库内容变化的监听
2012-02-07 11:31 5986Android数据库内容变化的监听 首先介绍内容监 ... -
android中的数据库操作
2012-02-07 10:50 1406android中的数据库操作 ... -
SQLiteOpenHelper类与自动升级数据库
2012-02-07 10:31 2234SQLiteOpenHelper类与自动升级数据库 S ... -
SQLite外键的实现
2012-02-07 10:30 1652SQLite外键的实现 SQLite现在的版本还不支持 ... -
29日修改数据库设计
2012-01-29 15:24 0数据表设计: 账号信息表account ... -
最新数据库设计
2012-01-28 21:21 0数据表设计: 工资管理 账号信息表Acc ... -
数据库设计
2012-01-11 15:27 0数据库设计 信息表:infotypecreate ta ... -
Android到处都在使用的回调分析
2011-12-21 15:53 3496Android到处都在使用的回调分析 ... -
android中LayoutInflater的使用
2011-12-21 11:35 1896android中LayoutInflater的使用 ... -
cmd下操作mysql
2011-12-20 14:11 920cmd下操作mysql 连接mysql服务器 mysql ... -
SIM卡满处理流程分析
2011-12-19 15:15 1839SIM卡满处理流程分析 //框架层分析 // SMSD ... -
短信发送状态报告流程分析
2011-12-19 15:07 2347短信发送状态报告流程分析 //应用层分析: //Sms ... -
Android平台 短信接送流程剖析(含编码)
2011-12-16 15:29 3192Android平台 短信接送流程剖析(含编码) ...
相关推荐
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenHelper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,在...
这篇博文写的是用SQLiteOpenHelper()方法创建数据库中的表结构,而如何用这个方法创建数据库,欢迎大家访问我的博文: 在android studio中用SQLiteOpenHelper()方法建立数据库 注:这篇文章是承接上面发的链接的...
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenH elper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,...
继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。 onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。 onUpgrade(SQLiteData
版本1.0.0在项目中添加在您的项目中添加SQLiteMergerHelper.java类在项目资产中创建 dbscript.txt开始使用首先转到您的 SQLiteOpenHelper 并更新 onUpgrade 方法@Override public void onUpgrade(final ...
这是一个抽象类,所以我们一般都有一个SQLiteOpenHelper子类,需要继承实现 • void onCreate(SQLiteDatabase db) 在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表。 • void ...
在这个子类中,通常需要实现onCreate()和onUpgrade()方法。onCreate()方法在数据库第一次创建时被调用,通常在这里执行创建表的SQL语句。onUpgrade()方法则在数据库版本发生变化时被调用,用于执行数据库升级操作,如...
每次使用数据库都会有繁琐的代码要写,大致思路是继承自SQLiteOpenHelper写一个数据库操作子类,然后重写onCreate方法,写上数据库的建表语句,重写onUpgrade方法,写上数据库的升级执行代码,此外还有繁琐的 增、删...
SQLite SQLiteOpenHelper 有两个抽象方法,分别是onCreate和onUpgrade,他们分别是数据库创建和数据库版本升级的回调方法 。 实验 通过SQLiteOpenHelper创建属于项目的数据库 谢谢 请专家批评指正!
2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = ...
1、SQLiteOpenHelper:创建数据库和数据库版本管理的辅助类,该类是一个抽象类,所以我们一般都有一个子类SQLiteOpenHelper,需要继承实现的方法主要有onCreate()、onUpgrade()、getWritableDatabase()等。...
SQLiteOpenHelper类提供了两个必须重写的抽象方法: onCreate:此方法必须包括数据库中的初始表创建和数据加载操作。 onUpgrade:此方法包括有关在现有数据库中创建表,修改表或删除表的说明。 下面总结了在...
Andoird的SQLiteOpenHelper类中有一个onUpgrade方法。帮助文档中只是说当数据库升级时该方法被触发。经过实践,解决了我一连串的疑问: 1. 帮助文档里说的“数据库升级”是指什么? 你开发了一个程序,当前...
(1)创建一个数据类工具类DBHelper,该类继承SQLiteOpenHelper,重写onCreate()和onUpgrade()方法,并添加insert()、delete()、query()方法,分别实现数据的添加、删除和查询。DBHelper类的代码如下: package ...
import android.database.sqlite.SQLiteOpenHelper; public class DB_Table_Number extends SQLiteOpenHelper { private static final String DB_NAME = "tablenumber.db"; private static final String TBL...
① 创建一个类继承SQLiteOpenHelper ② 重写父类构造方法、onCreate()、onUpgrade() ③ 增删改查 4、效果图 5、案例代码 MyHelper.java package com.example.sqlite; import android.content.Context; import ...
定义数据库MySQLiteOpenHelper继承父类SQLiteOpenHelper写基本操作要用的方法并建立相关的类。相关代码如下: MySQLiteOpenHelper.java: public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static...
sql语法就不介绍了,直接看在android中的使用 SQLiteOpenHelper——封装好的数据库操作辅助类,需重写 重写方法 onCreate:初始化数据库,创建表,添加初始数据 onUpgrade:数据库版本升级时的数据库操作,如备份...
-- 必须继承 SQLiteOpenHelper - onCreate() 当数据库创建的时候调用(一般用户创建初始表) - onUpgrade() 当数据库升级的时候调用 - 构造方法 提供相关信息 - 使用操作类获取数据库实例 -- 实例化操作类 --...