APP下载

Android开源数据库框架LitePal的研究与应用

2016-07-04申圣兵

中国新通信 2016年10期
关键词:数据库

申圣兵

【摘要】 本文首先对Android传统数据库操作方式进行了描述,然后重点描述了Android开源数据库框架LitePal的使用,通过对比,突出表现LitePal工作的简洁、高效。

【关键词】 Android 数据库 LitePal ORM

LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包只有100k不到,而且近乎零配置,使用LitePal框架,可以将我们从繁琐的数据库操作中解放出来。

一、传统的数据库操作方式

在Android的应用开发中,传统的数据库操作方式是使用 Android操作系统中集成的一个嵌入式关系型数据库SQLite来进行的,它要求开发人员熟练的掌握SQL语法,操作数据库基本是通过SQL语句来实现的。为了方便我们对数据库表进行管理,Android本身还提供了一个帮助类:SQLiteOpenHelper。这个类集创建和升级数据库于一身,并且自动管理了数据库版本,算是一个非常好用的工具了。

下面我们来看看SQLiteOpenHelper的用法吧。首先你要知道SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。

新建一个SQLLiteHelperUtil,这样一个最基本的数据库帮助类的代码如下:

Public class SQLLiteHelperUtil extends SQLLiteOpenHelper{

Public SQLLiteHelperUtil(Context context,String name,CursorFactory factory,int version){

Super(context,name,factory,version);

}

@Override

public void onCreate(SQLiteDatabase db) {

}

@Override

public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {

}}

其中,当数据库创建的时候会调用onCreate()方法,在这里去执行建表操作就可以了。比如说我们想新建一张课程表course表,其中有courseName,classRoom,teacher,dayOfWeek这几列,分别代表课程名,教室,任课教师,周几,那么代码就可以这样写:

Public static final String CREATE_COURSE=”create table course(“

+ ?id integer primary key autoincrement, ?

+?courseName text,?

+?classRoom text,?

+?teacher text,?

+?dayOfWeek integer?);”

我们把建表语句定义成了一个常量,然后在上述SQLLiteHelperUtil类onCreate()方法中使用db.execSQL(CREATE_ COURSE )去执行了这条建表语句,course表也就创建成功了。现在,我们只要获取SQLLiteDatabase的实例,数据库表就会自动创建了,如下所示:

SQLLiteOpenHelper dbHelper=new SQLLiteHelperUtil(this,”spdb.db”,null,1);

SQLLiteDatabase db=dbHelper.getWritableDatabase();

二、LitePal的使用方法

2.1引入Jar包

首先,我们需要将LitePal的jar包引入到项目当中,下载好了jar包之后,把它复制到项目的libs目录中就算是引入成功了,如下图所示:

2.2配置litepal.xml

接着在项目的assets目录下面新建一个litepal.xml文件,并将以下代码输入进去:

<?xml version=”1.0” encoding=”utf-8”?>

配置文件相当简单,用于设定数据库的名字,用于设定数据库的版本号,用于设定所有的映射模型,我们稍后就会用到。

2.3配置LitePalApplication

由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了,如下图所示:

仅仅三步,我们的配置就已经完成了。

LitePal采取的是对象关系映射(ORM)的模式,那么什么是对象关系映射呢?简单点说,我们使用的编程语言是面向对象语言,而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。

那么接下来我们就看一看LitePal中是如何建表的吧。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张course表,就应该有一个对应的course模型类。新建一个course类,如下所示:

Public class Course extends DataSupport{

Private int id;

Private String courseName;

Private String classroom;

Private String teacher;

Private int dayOfWeek;

//自动生成的Get和Set方法

}

现在模型类已经建好了,我们还差最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在标签中加入course模型类的声明:

<?xml version=”1.0” encoding=”utf-8”?>

OK,这样所有的工作就都已经完成了,现在只要你对数据库有任何的操作,course表就会被自动创建出来。比如说LitePal提供了一个便捷的方法来获取到SQLiteDatabase的实例,如下所示:

SQLiteDatabase db = Connector.getDatabase();

我们在操作Course表时只需要调用对象course.save或者course.find或者course.findAll()即可实现表格的保存和查询操作。

由于大多数的程序员都很擅长面向对象编程,只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?有了litePal,你就可以从繁琐的数据库操作中解放出来,专心处理事物逻辑了。

参 考 文 献

[1]马获蕾. Android系统中SQLite数据库的研究.电脑知识与技术,2013年,28期

[2]王绍祥.手机与数据库的一种数据交互方法.郑州轻工业学院学报(自然科学版),2011年,06期

[3]权重民.利用JSON实现Android高效、安全访问远程数据库的一种方式.韶关学院学报,2011年,12期

猜你喜欢

数据库
数据库
数据库
数据库
数据库
数据库
数据库