android数据库版本升级,在onUpgrade方法如何写,防止跨级重新创建数据表而报错
2016-07-17 21:38
741 查看
在数据库版本号为1的时候,项目创建一个数据表sheet1.
public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION=1;//定义数据库版本号
private static final String DBNAME="database.db";//数据库名
public DBOpenHelper(Context context) {//定义构造函数
super(context, DBNAME, null, VERSION);//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据库
db.execSQL("create table sheet1(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet1
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在数据库版本号为2的时候,项目创建第二个数据表sheet2.
public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION=2;//定义数据库版本号
private static final String DBNAME="database.db";//数据库名
public DBOpenHelper(Context context) {//定义构造函数
super(context, DBNAME, null, VERSION);//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据库
db.execSQL("create table sheet1(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet1
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
}
}
在数据库版本号为3的时候,项目创建第三个数据表sheet3.
public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION=3;//定义数据库版本号
private static final String DBNAME="database.db";//数据库名
public DBOpenHelper(Context context) {//定义构造函数
super(context, DBNAME, null, VERSION);//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据库
db.execSQL("create table sheet1(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet1
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
db.execSQL("create table sheet3(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet3
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
db.execSQL("create table sheet3(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet3
break;
case 2:
db.execSQL("create table sheet3(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet3
break;
}
}
}
采用switch语句,很好解决用户从第一版本跨级升到第三版本,数据库表创建没出错。
public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION=1;//定义数据库版本号
private static final String DBNAME="database.db";//数据库名
public DBOpenHelper(Context context) {//定义构造函数
super(context, DBNAME, null, VERSION);//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据库
db.execSQL("create table sheet1(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet1
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
在数据库版本号为2的时候,项目创建第二个数据表sheet2.
public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION=2;//定义数据库版本号
private static final String DBNAME="database.db";//数据库名
public DBOpenHelper(Context context) {//定义构造函数
super(context, DBNAME, null, VERSION);//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据库
db.execSQL("create table sheet1(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet1
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
}
}
在数据库版本号为3的时候,项目创建第三个数据表sheet3.
public class DBOpenHelper extends SQLiteOpenHelper {
private static final int VERSION=3;//定义数据库版本号
private static final String DBNAME="database.db";//数据库名
public DBOpenHelper(Context context) {//定义构造函数
super(context, DBNAME, null, VERSION);//重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db) {//创建数据库
db.execSQL("create table sheet1(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet1
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
db.execSQL("create table sheet3(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet3
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL("create table sheet2(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet2
db.execSQL("create table sheet3(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet3
break;
case 2:
db.execSQL("create table sheet3(id integer primary key,demo1 varchar(500),demo2 varchar(500))");//创建表sheet3
break;
}
}
}
采用switch语句,很好解决用户从第一版本跨级升到第三版本,数据库表创建没出错。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件