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 1445Android-sharedUserId数据权限 An ... -
Android Service学习之本地服务
2012-04-18 10:28 863转: Android Service学习之本地服务 htt ... -
match_parent和fill_parent的区别 .
2012-02-18 11:49 1839match_parent和fill_parent的区别 有 ... -
Android启动各种系统服务线程
2012-02-09 10:59 1936Android启动各种系统服务 ... -
android
2012-02-08 09:22 0Android数据库内容变化的监听 首先介绍内容监 ... -
在线升级Android应用程序的思路
2012-02-07 11:34 878在线升级Android应用程序的思路 http://www. ... -
Android数据库内容变化的监听
2012-02-07 11:31 6033Android数据库内容变化的监听 首先介绍内容监 ... -
android中的数据库操作
2012-02-07 10:50 1451android中的数据库操作 ... -
SQLiteOpenHelper类与自动升级数据库
2012-02-07 10:31 2283SQLiteOpenHelper类与自动升级数据库 S ... -
SQLite外键的实现
2012-02-07 10:30 1717SQLite外键的实现 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 3545Android到处都在使用的回调分析 ... -
android中LayoutInflater的使用
2011-12-21 11:35 1932android中LayoutInflater的使用 ... -
cmd下操作mysql
2011-12-20 14:11 985cmd下操作mysql 连接mysql服务器 mysql ... -
SIM卡满处理流程分析
2011-12-19 15:15 1881SIM卡满处理流程分析 //框架层分析 // SMSD ... -
短信发送状态报告流程分析
2011-12-19 15:07 2392短信发送状态报告流程分析 //应用层分析: //Sms ... -
Android平台 短信接送流程剖析(含编码)
2011-12-16 15:29 3227Android平台 短信接送流程剖析(含编码) ...
相关推荐
在深入探讨`SQLiteOpenHelper`类中的`onUpgrade`方法之前,我们先来了解下`SQLiteOpenHelper`类在Android开发中的重要性。`SQLiteOpenHelper`是Android SDK提供的一个辅助类,用于帮助开发者创建和管理应用程序中的...
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenHelper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,在...
总结起来,SQLiteOpenHelper在Android中是处理SQLite数据库的核心类,它负责数据库的创建、升级,以及为我们提供安全、方便的方法来执行SQL操作。通过重写其生命周期方法,我们可以定制数据库的初始化和升级过程,...
SQLiteOpenHelper是Android提供的一种管理SQLite数据库的工具类,它简化了数据库的创建和版本管理。本篇文章将深入探讨如何在Android中使用SQLiteOpenHelper进行数据库的简单应用。 首先,SQLiteOpenHelper有两个...
首先,我们需要创建一个继承自`SQLiteOpenHelper`的自定义类,并重写其两个关键方法:`onCreate()`和`onUpgrade()`。 `onCreate()`方法在首次创建数据库时调用,用于执行数据库的创建语句,如创建表: ```java @...
今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenH elper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,...
这篇博文写的是用SQLiteOpenHelper()方法创建数据库中的表结构,而如何用这个方法创建数据库,欢迎大家访问我的博文: 在android studio中用SQLiteOpenHelper()方法建立数据库 注:这篇文章是承接上面发的链接的...
在Android开发中,SQLite是一个非常重要的数据存储工具,SQLiteOpenHelper是Android SDK提供的一种管理SQLite数据库的辅助类。本文将深入探讨SQLiteOpenHelper的使用方法及其在实际应用中的关键知识点。 首先,...
在上面的示例中,我们继承了 SQLiteOpenHelper 并实现了其抽象方法 onCreate 和 onUpgrade。onCreate 方法用于创建数据库表,而 onUpgrade 方法用于升级数据库。 SQLiteOpenHelper 的封装使用 下面我们将介绍 ...
- 当数据库需要升级时,SQLiteOpenHelper的`onUpgrade`方法会被调用,开发者可以在此方法中执行升级逻辑,如修改表结构、添加新表等。 4. **注意事项**: - 数据库操作应在主线程之外进行,以避免阻塞UI线程。通常...
SQLiteOpenHelper是Android SDK提供的一种工具类,它帮助开发者轻松管理SQLite数据库,包括创建、升级和打开数据库。在这个示例中,我们将深入探讨如何使用SQLiteOpenHelper进行数据操作。 SQLiteOpenHelper主要有...
总结一下,Android中的SQLite数据库操作主要依赖SQLiteOpenHelper类,它提供了创建和升级数据库的能力。ListView结合适配器可以方便地展示数据库中的数据。此外,Menu键的使用增强了应用的交互性,使用户能轻松访问...
SQLiteOpenHelper是Android提供的一类用于帮助我们操作SQLite数据库的工具类,它简化了数据库的创建、升级以及版本管理。在这个“android项目利用SQLiteOpenHelper创建数据库文件Demo”中,我们将深入探讨如何在...
`SqliteOpenHelper`是Android平台中用于操作SQLite数据库的一个关键类。SQLite是一个轻量级、嵌入式的数据库引擎,常用于移动设备应用开发,因为它的资源占用少且易于使用。在Android应用中,`SqliteOpenHelper`是...
《Pro-Android-3 BookProvider SQLiteOpenHelper》是关于Android应用开发的一本专业书籍,主要探讨了如何在Android系统中利用`BookProvider`和`SQLiteOpenHelper`进行数据存储和管理。`BookProvider`是自定义的内容...
SQLiteOpenHelper是Android SDK提供的一种管理SQLite数据库的工具类,它可以帮助开发者轻松地创建、升级和打开数据库。本篇文章将深入探讨如何在Android应用中实现SQLiteOpenHelper。 首先,我们了解...
SQLiteOpenHelper是Android开发中用于操作SQLite数据库的一个关键类。它主要负责数据库的创建、升级以及版本管理,使得开发者能够方便地处理数据库的生命周期。在这一067集的视频教程中,你将深入理解...
SQLiteOpenHelper是Android开发中用于操作SQLite数据库的一个关键类。它主要负责数据库的创建、升级以及版本管理。在本文中,我们将深入探讨SQLiteOpenHelper的详细使用方法,并通过一个基础的示例来展示其功能。 ...
SQLiteOpenHelper是Android提供的一个用于操作SQLite数据库的辅助类,它简化了数据库的版本管理和创建、升级工作。本项目"SQLiteOpenHelper.zip"提供了一个简单的SQLiteOpenHelper实现,针对两个字符串字段进行CRUD...