Android数据库之创建和升级数据库(中)
上一篇文章中,简单介绍了一下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>如果我们直接运行我们的程序,会发现并没有把我们的数据库给创建出来。如果创建和访问数据库需要调用getReadableDatabase或getWritableDatabase来获取数据库只读或可写的实例。当我们调用执行完helper.getReadableDatabase();或helper.getWritableDatabase();后,数据库实例就被创建出来了。如图:
接着使用我们的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>
这样同样可以创建出来test1.db数据库,创建完成后记得使用数据库的exeSQL来根据执行创建和删除表的操作。
本文就简单介绍到这吧,都是挺浅的一些东西,也是我们Android中基本用到的创建和升级数据库的可选方案了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。