上一篇文章中,简单介绍了一下android数据库的一些基本概念,那么从本节开始,就实战一下Android数据库的创建和升级。
上文中,也介绍了,SQLiteOpenHelper是一个抽象类,是我们用来创建和升级数据库的最佳实践。下面直接以代码方式,演示一下数据库的创建操作。
<span style="font-size:18px;">package com.happy.db.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
/**
* @Description: 数据库辅助类 主要完成数据库的创建以及升级
*/
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "test.db";
private static final String TABLE_NAME = "user";
private static final int DB_VERSION = 1;
private static final String ID = "id";
private static final String NAME = "name";
private static final String GENDER = "gender";
private static final String TELEPHONE = "telphone";
// 创建数据库的sql语句
private static final String CREATE_DB_SQL = "CREATE TABLE " + TABLE_NAME
+ "(" + ID + " integer primary key autoincrement , " + NAME
+ " text not null ," + GENDER + " text ," + TELEPHONE + " integer "
+ ")";
/**
* 构造方法
*
* @param context
* 上下文
* @param name
* 数据库名
* @param factory
* 游标工厂
* @param version
* 数据库版本号
*/
public MySQLiteOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, DB_NAME, null, version);
}
/**
* 当磁盘上不存在数据库文件时,辅助类需要创建一个新数据时使用
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DB_SQL);
}
/**
* 已经存在数据库,但是数据库版本不一样时调用(升级)
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
</span>
接着使用我们的SQLite Expert Professional 3打开次数据库,会看到数据结构如下:
这样我们便完成了数据库实例的创建。
下面,同样的方法介绍一下我们数据库版本的升级。
首先,定义我们升级数据库的sql语句,在这为user增加一列,并在upgrade中执行该sql。
<span style="font-size:18px;">//升级数据库语句
private static final String UPGRADE_SQL = "ALTER TABLE " + TABLE_NAME
+ " ADD COLUMN " + " money float ";
/**
* 已经存在数据库,但是数据库版本不一样时调用(升级)
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(UPGRADE_SQL);
}</span>
然后在我们的程序中执行如下代码:
<span style="font-size:18px;">case R.id.bt_upgrade_db://升级数据库
helper = new MySQLiteOpenHelper(getApplicationContext(), "test.db", null, 2);
helper.getReadableDatabase();
break;</span>
这样,运行之后,便会将我们的数据库进行升级,再次将我们的数据库打开,会发现数据结构如下:
如此,便完成了我们数据库的升级逻辑。当然,在实际开发中,upgrade中不会简单执行一条的,需要对当前数据版进行判断,对于不同的数据库版本执行不同的sql语句。
当然,如果我们希望直接管理数据库的创建 打开和版本控制操作,而不是使用sqliteopenhelper,那么可以使用应用程序Context对象的openOrCreateDataBase方法来创建数据库本身。
<span style="font-size:18px;">Context context = getApplicationContext();
SQLiteDatabase db = context.openOrCreateDatabase("test1.db",
Context.MODE_PRIVATE, null);
db.execSQL("create table student ( id integer primary key autoincrement , name text,sex text,mobile integer) ");</span>
本文就简单介绍到这吧,都是挺浅的一些东西,也是我们Android中基本用到的创建和升级数据库的可选方案了。