android数据库版本升级,在onUpgrade方法如何写,防止跨级重新创建数据表而报错

在数据库版本号为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语句,很好解决用户从第一版本跨级升到第三版本,数据库表创建没出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android创建两个数据表的步骤如下: 1. 创建一个数据库帮助类,用于打开、创建、更新并操作数据库。 ```java public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "mydatabase.db"; private static final int DB_VERSION = 1; public MyDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建第一个数据表 db.execSQL("CREATE TABLE table1 (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER);"); // 创建第二个数据表 db.execSQL("CREATE TABLE table2 (id INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, phone TEXT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 数据库升级时需要执行的操作 } } ``` 2. 在需要使用数据库的Activity或Fragment中实例化数据库帮助类,并获取可入或只读的数据库对象。 ```java MyDatabaseHelper dbHelper = new MyDatabaseHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); // 获取可数据库对象 ``` 3. 在需要操作数据库的地方,执行SQL语句对数据表进行增删改查操作。 ```java // 插入数据 ContentValues values = new ContentValues(); values.put("name", "Tom"); values.put("age", 20); db.insert("table1", null, values); // 查询数据 Cursor cursor = db.query("table1", null, null, null, null, null, null); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); // 对查询结果进行处理 } while (cursor.moveToNext()); } // 更新数据 ContentValues values = new ContentValues(); values.put("age", 21); db.update("table1", values, "name=?", new String[]{"Tom"}); // 删除数据 db.delete("table1", "name=?", new String[]{"Tom"}); ``` 以上是创建和操作两个数据表的基本步骤,具体的数据库操作可以根据需要进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值