众所周知,Android使用的SQLite数据库,其特点是高度便携、使用方便、结构紧凑、高效、可靠

今天的目标就是在Android手机中创建一个数据库

首先,Android 使用的是SQLiteOpenHelper类来管理数据库,来看看官方的对于此类的概述:

A helper class to manage database creation and version management.

You create a subclass implementingonCreate(SQLiteDatabase),onUpgrade(SQLiteDatabase, int, int)and optionallyonOpen(SQLiteDatabase), and this class takes care of

opening the database if it exists, creating it if it does not, and upgrading it as necessary. Transactions are used to make sure the database is always in a sensible state.

翻译(翻译的不好,请见谅):

SQLiteOpenHelper是一个创建数据库和管理数据库版本的的工具类

你可以创建一个这个类的子类并实现 onCreate(SQLiteDatabase) 方法 , onUpgrade(SQLiteDatabase, int, int) 方法 , 还有可选的 onOpen(SQLiteDatabase) 方法

此类会在数据库存在的时候将其打开,数据库不存在的时候创建数据库,在需要更新的时候升级数据库。这些管理用来确认数据库一直处于合理的状态

下面介绍一下它的构造方法 SQLiteOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactoryfactory, int version) 和 onCreate(SQLiteDatabase) 和

onUpgrade(SQLiteDatabase, int, int) 方法

1.SQLiteOpenHelper(Contextcontext,Stringname,SQLiteDatabase.CursorFactoryfactory, int version)方法:

(官方介绍)Create a helper object to create, open, and/or manage a database. This method always returns very quickly. The database is not actually created or opened until

one ofgetWritableDatabase()orgetReadableDatabase()is called.

翻译:

创建一个用来创建,打开,管理一个数据库的工具类,这个方法运行非常快,但是,调用此方法实际上并没有创建或者打开一个数据库,当调用

getWritableDatabase()getReadableDatabase() 方法的时候才会创建或者打开一个数据库

意思是这个方法表面上是一个构造方法,实际上也只是将此工具类初始化完毕,而不会与程序中的数据库有任何的联系

2.onCreate(SQLiteDatabase) 方法:

(官方介绍)Called when the database is created for the first time. This is where the creation of tables and the initial population of the tables should happen.

当数据库第一次创建的时候会调用此方法,这是初始创建表或者创建多个表时应该调用的方法

需要注意的是,我们只有使用已经初始化的SQLiteOpenHelper对象的getWritableDatabase() 或者getReadableDatabase()的时候才会调用这个

onCreate(SQLiteDatabase)方法,所以,这个方法需要实现数据库中创建表的操作

3.onUpgrade(SQLiteDatabase, int, int) 方法:

(官方介绍)Called when the database needs to be upgraded. The implementation should use this method to drop tables, add tables, or do anything else it needs to upgrade

to the new schema version.

当数据库版本需要更新的时候会调用此方法,实现此方法来删除表,添加表或者做其他任何事情来使旧版本数据库更新成最新版本


下面是一个示例:此类继承了SQLiteOpenHelper抽象类,并实现了onCreate(SQLiteDatabase) 和onUpgrade(SQLiteDatabase, int, int) 方法

此示例是Android创建一个学生数据库管理程序的SQLiteOpenHelper 部分,具体的实现我会在下一节课中写出来

/** * <p/> * SQLiteOpenHelper用于创建和管理数据库以及版本,需要创建一个子类继承,该类封装了对数据库操作的基本方法,使用方便。 * <p/> * 此类即是对特定数据库进行封装的类, */public class SqLiteHelper extends SQLiteOpenHelper {    Context context;    public SqLiteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {        super(context, name, factory, version);        this.context = context;        Log.i(StuDataBaseController.DBName,"执行了SqLiteHelper的初始化方法");    }    //调用此类的getReadableDatabase或getWritableDatabase时,    //会判断是否有指定数据库存在,如果没有,则调用此onCreate方法    @Override    public void onCreate(SQLiteDatabase sqLiteDatabase) {        Log.i(StuDataBaseController.DBName,"执行了SqLiteHelper的onCreate方法");        //创建学生表        sqLiteDatabase.execSQL("CREATE TABLE IF NOT EXISTS " +                StuModel.StuDataBaseName   +                " ( " + StuModel.StuId +                " integer primary key," +                StuModel.StuName +                " VarChar(50)," +                StuModel.StuAge +                " integer" + " );");    }    //更新表的时候会调用,一般用于不同版本的软件更新数据库的时候使用    @Override    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {      sqLiteDatabase.execSQL("DROP TABLE IF EXISTS " + StuModel.StuDataBaseName);      onCreate(sqLiteDatabase);    }}

下一篇的链接为 Android数据库SQLite使用详解二 : 学生管理系统的简单实现




更多相关文章

  1. Android(安卓)Calendar一闪而过 无法创建event
  2. Android中动态图形的绘制(一)
  3. AIDL跨进程通信的使用
  4. Android(安卓)菜单(OptionMenu)大全 建立你自己的菜单
  5. 【转载】Android事件分发机制完全解析,带你从源码的角度彻底理解(
  6. android 4种存储方式
  7. Android中检测网络连接状况的方法
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. PHP:【微信小程序】微信小程序数据交互,微
  2. PHP:【微信小程序】初识微信小程序,微信小
  3. 浅析 URL
  4. 微信小程序介绍、配置、视图层、逻辑层、
  5. 热烈庆祝!!!经过不懈努力,荣登前八名热门博主
  6. 为何电脑磁盘有的文件突然都看不见了,却
  7. 仿php中文网
  8. 选择器的使用和模块化组件思想
  9. PHP:【微信小程序】微信小程序API,微信小
  10. 请求与响应