- 浏览: 109579 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
原帖地址:http://www.cnblogs.com/milospooner/archive/2013/06/01/3113306.html
Android Sqlite数据库版本升级管理初探
http://angrycode.cn/archives/428
在做Android项目涉及到版本升级,而数据库同样也会因为需求的变更而导致表的增减以及字段的增减。这是不可避免的。
麦洛刚开始做项目的时候很少考虑这个问题,但当软件需要升级版本后,数据库的表结构很有可能就改变了,如果不考虑数据库的版本升级,那么在软件升级时,就会因为数据库找不到
某些字段而出错。也不能把之前版本的数据库删除,因为以前版本的数据就会丢失。因此就需要认真的去管理数据库的版本了。
Android为开发者提供了SQLiteOpenHelper 这个访问数据库的接口。开发者只需要继承这个接口就可以了,它对外提供了两个方法:onCreate(SQLiteDatabase db)与
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)。这两个方法都是由系统自动调用的。
onCreate()方法用于初次使用时系统会检查数据库的是否文件.如果不存在则创建数据库表;如果存在则检查数据库的版本号,如果这次的版本号比上次的版本号高,则调用onUpgrade()更新数据库表结构。
在SQLiteOpenHelper的子类的构造方法里面需要传递一个数据库的版本号,这个版本号是从1开始的,随着版本的更新,这个号码也是不断变化的。
例如软件在最初时的数据库版本是1,下次在升级的时候,就需要更改为2了(当然只要改成比上次的版本号要大就行了)。
下面是一个简单例子,angrycode:
<pre>
public class DatabaseHelper extends SQLiteOpenHelper {
/**
* log tag
*/
private static final String TAG = "DatabaseHelper";
/**
* 数据库名称
*/
private static final String DB_NAME = "user_manager.db";
/**
* 数据库版本号,默认从1开始,2013/5/31升级为2,需要数据库更新时,更改此值。
*/
private static final int DB_VERSION = 2;
private static DatabaseHelper instance = new DatabaseHelper(MyApplication.getContext());
private DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}
private DatabaseHelper(Context context,int version){
super(context,DB_NAME,null,version);
}
public static DatabaseHelper getDatabaseHelper(){
return instance;
}
@Override
public void onCreate(SQLiteDatabase db) {
//创建用户表
db.execSQL("create table if not exists user_table (id integer primary key autoincrement,name varchar(32) not null)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//这里对表进行修改
//String sql1 = "DROP TABLE IF EXISTS user_table;";
String sql7 = "ALTER TABLE user_table ADD COLUMN phone_number varchar(15);
db.execSQL(sql7);
//onCreate(db);
}
</pre>
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 434原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1750原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 654原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 754原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 919原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 643原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 1028原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 634原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 540原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 619原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 871原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 612原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 549原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 715原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 798原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 573原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1455原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 695原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 787原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 530原帖地址:http://www.cnblogs.com/cod ...
相关推荐
7. **版本控制**:支持数据库版本管理,可以跟踪和回滚数据库的变化,确保应用在更新时数据的正确性。 8. **性能优化**:提供分析和优化SQL语句的功能,帮助开发者识别并改进性能瓶颈,提升应用程序的运行效率。 9...
Android SQLite 数据库操作报告 一、实验目的 Android 实验报告的主要目的是熟悉 Android 平台的文件操作、掌握 Android SQLite 数据库的设计和应用、熟悉 XML 和 JSON 文件的读取。通过本实验,用户可以掌握 ...
2. **数据库版本管理**: 数据库的版本管理通过SQLiteOpenHelper的构造函数传入,当数据库版本号改变时,`onUpgrade()`会被调用,允许开发者执行升级操作,如添加新表或修改现有表结构。 3. **SQL语句的执行**: 使用...
`onUpgrade()`则在数据库版本升级时调用,可以用来修改表结构或进行其他升级操作。 2. **创建表** 在`onCreate()`方法中,我们需要编写SQL语句来创建表。例如,创建一个名为`Users`的表,包含`id`(整型,主键)、...
5. **在应用程序中执行升级**:在实际的软件开发中,我们需要在应用程序启动时检查数据库版本,并根据需要运行相应的升级脚本。这通常通过查询`sqlite_master`表获取当前版本,然后与预期版本进行比较来实现。如果...
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个...
9. **版本控制**:对于多版本管理,可以进行数据库版本的升级和回滚,确保数据的一致性。 使用"android sqlite_admin"软件,开发者可以无需编写复杂的代码,通过直观的界面就能完成大部分的数据库管理工作,极大地...
Android SQLite数据库版本升级的管理实现是指在Android应用程序中实现数据库版本升级的管理,以便在数据库结构或数据格式发生变化时,能够正确地升级数据库版本。本文主要介绍了Android SQLite数据库版本升级的管理...
- **onUpgrade()**: 当数据库版本升级时调用,用于更新或删除旧表。 ### 3. CRUD操作 - **创建(CREATE)**: 使用SQL语句`CREATE TABLE`创建新表,例如:`CREATE TABLE IF NOT EXISTS TableName (Column1 DataType, ...
SQLite是一个轻量级的、嵌入式的、关系型数据库,它允许开发者在Android设备上存储和管理数据。随着应用的迭代和功能的增加,可能需要对数据库进行升级,比如添加新的表格、修改现有表格结构或者增加字段。本文将...
SQLiteOpenHelper负责创建和升级数据库,同时提供了getWritableDatabase()和getReadableDatabase()方法来获取可读写或只读的数据库实例。 1. **创建数据库**: 在SQLiteOpenHelper的子类中重写onCreate()方法,...
2. **DBSOpenHelper**: 这是SQLiteOpenHelper的子类,主要用于创建和升级数据库。SQLiteOpenHelper有以下几个关键方法: - `onCreate`: 当数据库首次创建时调用,开发者在此定义初始的数据库结构,如创建表的SQL...
本资源文件`sqlitetest`着重展示了如何在Android应用中使用SQLite进行数据操作,并且包含了数据库版本管理的实现。 1. **SQLite数据库的基本概念** - 数据库:SQLite数据库是存储在设备文件系统中的一个单一文件,...
Android studio软件开发:基于SQLite数据库编写的学生管理系统源码,学生信息的增删改查和list view列表显示数据库内容,内附含sharepreference数据库编写的基础注册页面。
在Android应用开发中,SQLite是一个常用的轻量级数据库,它为数据存储提供了便利。然而,随着数据安全性的日益重要,对SQLite数据库进行加密是必要的,以保护敏感信息免受未授权访问。本篇文章将深入探讨如何在...
在安卓开发中,SQLite是一个非常重要的组成部分,它是一个轻量级的、开源的、嵌入式的SQL数据库引擎,被广泛用于存储和管理应用程序中的数据。SQLite数据库的优势在于它不需要独立的服务进程,可以直接嵌入到应用中...
开发者可以通过Android提供的SQLiteOpenHelper类来创建、升级和管理数据库,使用Cursor对象来查询和遍历数据。SQLite数据库的结构包含表格、列、索引等,每个表由一行或多行数据组成,每行数据又由一个或多个列组成...
greenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询。
3. 数据库版本管理:通过SQLiteOpenHelper的构造函数,我们可以指定数据库的初始版本。当数据库版本发生变化时,系统会自动调用onUpgrade()方法。 4. 创建SQLite表:在SQL语句中,我们使用CREATE TABLE语句来定义表...