之前一直不知道这个东西是干什么的,数据库的版本号也是随便定义的,还有两个版本号。
Android在设计时,就考虑到了数据库的更新。当检测到版本有变化时,就会对数据库更新,执行这个操作。
所以定义数据库的版本还是比较重要的,如第一个程序版本时定义的数据库版本为1,在程序发布新版时有对数据库更新操作,可能增加表,增加列,如果没有调整这个版本,数据库不会创建新的表,也不会添加新的列,安装新版的程序就会崩溃了。
查了一些资料终于明白了。
ContactsDatabaseHelper这个是系统 联系人的源码中的一个类,里面已经定义了版本为353,
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}在这个方法里处理了更新
大概代码是这样的
Java代码
1.if (oldVersion < 99) {直接删除所有的表,重建,有可能是变化太大的问题吧。}
2.
3.if (oldVersion == 100) {
4.CREATE INDEX创建一个新的索引
5.oldVersion++;增加旧版本号,
6.}
7.。。。之后多个操作,依次增加版本号。
8.
9.if (oldVersion == 105) {
10. upgradeToVersion202(db);//直接增加到202
11. oldVersion = 202;
12. }
13.
14.对于数据库的版本号还要严格地处理。
15.这里 对oldVersion操作完成后需要与newVersion一样,才算升级成功。
16.if (oldVersion != newVersion) {
17.throw new IllegalStateException(
18. "error upgrading the database to version " + newVersion);
19.} //当然这不是强制要求的,
20.upgrade就结束了。
21.这样数据库版本号就是newVersion,如果下一次要升级,就至少要比这个高才会触发。
也许有人会问,如果当前的表的存了数据,程序又不愿重新安装,更新数据库时要保留原来的数据怎么办呢?
以上的版本升级是必然要做的事,但是没有提到数据更新的问题。
如果不是删除原来的表格,只是增加了一列,可能会要求对这列赋默认的值
Java代码
1.上面有一个跨度较大的就是100多到202的升级:
2.upgradeToVersion202(SQLiteDatabase db)看这个方法:
3.db.execSQL(
4. "ALTER TABLE " + Tables.PHONE_LOOKUP +
5. " ADD " + PhoneLookupColumns.MIN_MATCH + " TEXT;");
6.增加了一列。
7.
8.SQLiteStatement update = db.compileStatement(
9. "UPDATE " + Tables.PHONE_LOOKUP +
10. " SET " + PhoneLookupColumns.MIN_MATCH + "=?" +
11. " WHERE " + PhoneLookupColumns.DATA_ID + "=?");
12.创建更新语句。
13.
14.Cursor c = db.query(Tables.PHONE_LOOKUP + " JOIN " + Tables.DATA +
15. " ON (" + PhoneLookupColumns.DATA_ID + "=" + DataColumns.CONCRETE_ID + ")",
16. new String[]{Data._ID, Phone.NUMBER}, null, null, null, null, null);
17.处理新的列。
18.
19.更新数据。
20.try {
21. while (c.moveToNext()) {
22. long dataId = c.getLong(0);
23. String number = c.getString(1);
24. if (!TextUtils.isEmpty(number)) {
25. update.bindString(1, PhoneNumberUtils.toCallerIDMinMatch(number));
26. update.bindLong(2, dataId);
27. update.execute();
28. }
29. }
30. } finally {
31. c.close();
32. }
33.这就是处理数据更新的过程。
博客文章列表居然发现三个,删除一个就全没了。这次格式乱了
分享到:
相关推荐
下面将详细讲解如何在Android中进行数据库表结构的更新,以及如何处理旧版本程序中表的接口添加、删减字段的问题。 1. **创建SQLite数据库** - Android使用SQLite作为默认的本地数据库系统。首先,我们需要创建一...
- **onUpgrade()**: 当数据库版本升级时调用,用于更新或删除旧表。 ### 3. CRUD操作 - **创建(CREATE)**: 使用SQL语句`CREATE TABLE`创建新表,例如:`CREATE TABLE IF NOT EXISTS TableName (Column1 DataType, ...
"android数据库操作封装"主要是为了提高代码的可读性、可维护性和复用性,通过创建自定义的数据访问对象(DAO)层和数据库帮助类来实现。 1. 数据库Helper类: 在Android中,我们通常会创建一个继承自`...
下面我们将深入讨论Android数据库应用的相关知识点。 1. SQLite数据库介绍 SQLite是一个开源的数据库系统,它被集成到Android操作系统中,无需额外安装任何软件。它的优点包括小巧、快速、可靠,以及支持SQL标准,...
本资源包提供了完整的Android数据库代码示例和详细的讲解资料,非常适合开发者深入学习和理解Android数据库的使用。 首先,我们来了解一下Android中主要使用的数据库系统——SQLite。SQLite是一个轻量级、嵌入式的...
这个“Android数据库示例源码”很可能是为了展示如何在Android平台上使用SQLite数据库进行数据操作。SQLite是一种轻量级、开源的SQL数据库,它嵌入到Android系统中,为每个应用程序提供独立的数据库。 首先,让我们...
在Android开发中,数据库是应用数据持久化的重要方式。Android提供了SQLite数据库系统...在`DemoDateBase`压缩包中,应该包含了这个框架的实现代码,你可以下载并参考其中的细节,进一步学习和实践Android数据库操作。
2. `onUpgrade()`方法:当数据库版本升级时调用,用于更新表结构或执行其他必要的升级操作。 二、数据库版本管理 每个SQLite数据库都有一个版本号,可以在SQLiteOpenHelper的构造函数中设置。每次升级时,都需要...
总结来说,这个"android数据库操作实例"涵盖了Android应用中使用SQLite数据库的基础知识,包括创建数据库、定义表结构、插入、查询、更新和删除数据等操作。通过学习这个实例,开发者可以更好地理解如何在Android...
综上所述,Android数据库升级是一个涉及版本管理、表结构修改和数据迁移的过程。通过合理地重写onUpgrade方法,我们可以确保应用程序在更新时能够顺利地适应新的数据库结构。同时,遵循最佳实践,可以提高升级的稳定...
这个“android数据库增删改查工具”是一个自定义的解决方案,旨在简化Android应用程序中SQLite数据库的操作。开发者通常会遇到处理用户数据、成员信息等需求,这时一个方便的数据库管理工具就显得尤为重要。 首先,...
首先,我们来谈谈Android数据库的基本概念。Android中的SQLite数据库通过SQLiteOpenHelper类进行操作。这个类提供了创建、升级和打开数据库的方法。开发者通常会继承SQLiteOpenHelper并重写onCreate()和onUpgrade()...
总结来说,本实验报告详细展示了在Android应用中如何使用SQLite数据库进行数据管理,包括数据库的创建、表的建立以及基本的CRUD(创建、读取、更新、删除)操作。通过DbHelper和DbManager类的设计,实现了数据操作的...
《深入理解Android数据库:SQLite3实战指南》 在Android应用开发中,数据库是不可或缺的一部分,它主要用于存储和管理应用程序的数据。本资源包“Android数据库.zip”聚焦于Android平台上的SQLite3数据库,它是...
本文将深入探讨Android数据库应用编程的相关知识点,帮助开发者掌握如何有效地在Android应用中管理和操作数据。 ### SQLite数据库介绍 SQLite是一个开源、嵌入式、自包含的SQL数据库引擎,无需单独的服务器进程,...
本示例"android 数据库的demo"将重点展示如何进行CRUD(创建、读取、更新和删除)操作。 首先,我们需要创建一个SQLite数据库。在Android中,我们通常通过继承`SQLiteOpenHelper`类来实现。这个类有两个关键的方法...
### Android数据库开发详解 #### 一、概述 在Android应用开发过程中,数据持久化是非常重要的一个环节。Android提供了多种方式来存储数据,包括文件存储、SharedPreferences、SQLite数据库以及网络存储等。其中,...
### Android数据库开发经典知识点 #### 一、SQLite简介与特性 SQLite是一款轻量级的关系型数据库,被广泛应用于各种嵌入式系统中,包括Android操作系统。由于其无需服务器进程、安装简便等特点,使得SQLite成为...
综上所述,Android数据库管理是一个多方面的任务,涉及数据库创建、操作、加密以及安全性增强。开发者应根据应用需求选择合适的加密方案,并遵循最佳实践以确保数据安全。NativeDemo项目提供了一个很好的起点,可以...
`onUpgrade()`则在数据库升级时调用,用于更新表结构。 例如,创建一个名为`DbHelper`的类: ```java public class DbHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = ...