`

Android中SQLiteOpenHelper类的onUpgrade方法的作用

阅读更多

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

 

分享到:
评论

相关推荐

    在android studio中用SQLiteOpenHelper()方法建立数据库

    今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenHelper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,在...

    Android Studio中用SQLiteOpenHelper()方法创建数据库中的表结构

    这篇博文写的是用SQLiteOpenHelper()方法创建数据库中的表结构,而如何用这个方法创建数据库,欢迎大家访问我的博文: 在android studio中用SQLiteOpenHelper()方法建立数据库 注:这篇文章是承接上面发的链接的...

    android studio使用SQLiteOpenHelper()建立数据库的方法

    今天我们讲讲在android studio中利用数据库存储中的SQLiteOpenHelper()方法建立数据库 SQLiteOpenH elper中需要重载函数: onCreate( ):利用SQL语句,在系统中创建数据库(表)功能 onUpgrade( ):利用SQL语句,...

    Android开发之Sqliteopenhelper用法实例分析

    继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。 onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。 onUpgrade(SQLiteData

    Android-SQLiteMergerHelper:在 Android 上迁移 SQLite 数据库

    版本1.0.0在项目中添加在您的项目中添加SQLiteMergerHelper.java类在项目资产中创建 dbscript.txt开始使用首先转到您的 SQLiteOpenHelper 并更新 onUpgrade 方法@Override public void onUpgrade(final ...

    Android 使用SQLite数据库

    这是一个抽象类,所以我们一般都有一个SQLiteOpenHelper子类,需要继承实现 • void onCreate(SQLiteDatabase db) 在数据库第一次生成的时候会调用这个方法,一般我们在这个方法里边生成数据库表。 • void ...

    android上使用Sqlite的一个小demo

    在这个子类中,通常需要实现onCreate()和onUpgrade()方法。onCreate()方法在数据库第一次创建时被调用,通常在这里执行创建表的SQL语句。onUpgrade()方法则在数据库版本发生变化时被调用,用于执行数据库升级操作,如...

    安卓Android sqlite万能数据库

    每次使用数据库都会有繁琐的代码要写,大致思路是继承自SQLiteOpenHelper写一个数据库操作子类,然后重写onCreate方法,写上数据库的建表语句,重写onUpgrade方法,写上数据库的升级执行代码,此外还有繁琐的 增、删...

    Android项目设计与开发:SQLite 1.ppt

    SQLite SQLiteOpenHelper 有两个抽象方法,分别是onCreate和onUpgrade,他们分别是数据库创建和数据库版本升级的回调方法 。 实验 通过SQLiteOpenHelper创建属于项目的数据库 谢谢 请专家批评指正!

    android连接SQLite数据库源代码

    2.android内部insert添加数据的方法,而且values这个不给值也必须要执行,而主键是不是null的其他字段的值是为null 3.insert update query delete 五、单元测试类要注意的 AndroidCRUDService curdService = ...

    Android数据持久化之SQLite数据库用法分析

    1、SQLiteOpenHelper:创建数据库和数据库版本管理的辅助类,该类是一个抽象类,所以我们一般都有一个子类SQLiteOpenHelper,需要继承实现的方法主要有onCreate()、onUpgrade()、getWritableDatabase()等。...

    Cronometro:具有数据库的基本秒表应用程序

    SQLiteOpenHelper类提供了两个必须重写的抽象方法: onCreate:此方法必须包括数据库中的初始表创建和数据加载操作。 onUpgrade:此方法包括有关在现有数据库中创建表,修改表或删除表的说明。 下面总结了在...

    Android数据库升级实例

     Andoird的SQLiteOpenHelper类中有一个onUpgrade方法。帮助文档中只是说当数据库升级时该方法被触发。经过实践,解决了我一连串的疑问:  1. 帮助文档里说的“数据库升级”是指什么?  你开发了一个程序,当前...

    Android小程序实现音乐播放列表

    (1)创建一个数据类工具类DBHelper,该类继承SQLiteOpenHelper,重写onCreate()和onUpgrade()方法,并添加insert()、delete()、query()方法,分别实现数据的添加、删除和查询。DBHelper类的代码如下: package ...

    Android掌上点餐系统

    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...

    Android实现通讯录功能

    ① 创建一个类继承SQLiteOpenHelper ② 重写父类构造方法、onCreate()、onUpgrade() ③ 增删改查 4、效果图 5、案例代码 MyHelper.java package com.example.sqlite; import android.content.Context; import ...

    Android数据库实验.docx

    定义数据库MySQLiteOpenHelper继承父类SQLiteOpenHelper写基本操作要用的方法并建立相关的类。相关代码如下: MySQLiteOpenHelper.java: public class MySQLiteOpenHelper extends SQLiteOpenHelper { public static...

    android SQLite数据库总结

    sql语法就不介绍了,直接看在android中的使用 SQLiteOpenHelper——封装好的数据库操作辅助类,需重写 重写方法 onCreate:初始化数据库,创建表,添加初始数据 onUpgrade:数据库版本升级时的数据库操作,如备份...

    sqlitedemo(Android Studio model)

    -- 必须继承 SQLiteOpenHelper - onCreate() 当数据库创建的时候调用(一般用户创建初始表) - onUpgrade() 当数据库升级的时候调用 - 构造方法 提供相关信息 - 使用操作类获取数据库实例 -- 实例化操作类 --...

Global site tag (gtag.js) - Google Analytics