通过项目实践,来熟悉利用开源库LitePal来操作SQLite数据库的基本使用方法。
一、LitePal开源库
1、简介
(1)、LitePal:一款开源的Android数据库框架,它采用了对象关系映射(ORM)模式,将平时开发最常用的一些数据库功能进行了封装,从而使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包大小不到100k,近乎零配置,这一点和Hibernate这类的框架有很大区别。目前,LitePal的源码已经托管到了GitHub上。地址:
https://github.com/LitePalFramework/LitePal。
(2)、对象关系映射:Object Relational Mapping,简称ORM。是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 简单的说,就是将面向关系的数据库和我们使用的面向对象的语言建立一种映射关系。
2、配置
原来需要下载源码或者Jar包才可以使用,现在LitePal开源库项目已经提交到了jcenter上,我们只需要在app/build.grade文件中声明该开源库的引用。
新建项目,LitePalTest,
以下所有关于目录的说明,均在project模式的目录结构下。
(1)、编辑app/build.grade文件,在dependencies闭包中添加以下内容:
dependencies {
compile 'org.litepal.android:core:1.6.1'
}
编辑完成后,点击页面上方的Sync now来同步。其中,1.6.1是版本号,最新版本号信息可以到LitePal项目主页去查看。
(2)、配置litepal.xml。
右击app/src/main目录,New -> Directory,新建一个assets目录,在该目录下,New -> File,输入litepal.xml,创建XML文件。并编辑以下内容:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore" />
<version value="1" />
<list>
</list>
</litepal>
其中,dbname是数据库名,我们沿用上一篇
关于SQLiteDatabase操作SQLite数据所使用的案例,version是数据库的版本号,list标签指定映射模型。
(3)、配置LitePalApplication。
修改AndroidManifest.xml文件,添加以下内容:
<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
</application>
</manifest>
当然,如果你使用了自己的Application,如下所示:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}
在配置AndroidManifest.xml文件时,则需要按如下所示配置:
<manifest>
<application
android:name="com.example.MyApplication"
...
>
...
</application>
</manifest>
经过以上三步配置之后,就可以开始使用LitePal了。
3、创建数据库
继续沿用上一篇案例的布局方案,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/create_database"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="创建"
/>
<Button
android:id="@+id/add_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加"
/>
<Button
android:id="@+id/update_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="更新"
/>
<Button
android:id="@+id/delete_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除"
/>
<Button