Android数据库(SQLite)框架(1)——创建表和LitePal的基本用法

来源:互联网 发布:环形网络拓扑结构 编辑:程序博客网 时间:2024/06/05 00:39

首先,引用一下百度百科对LitePal的定义:LitePal是GitHub上一款开源的Android数据库框架。LitePal是一款开源的android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包大小不到100k,而且近乎零配置,这一点和hibernate这类的框架有很大区别。目前LitePal的源码已经托管到了GitHub上。


第一步:引入Jar包或源码

eclipse开发环境:首先下载jar,建议下载最新版本的,然后放入你新建工程的libs中
AndroidStudio开发环境:修改你新建工程的build.gradle,增加一个新的依赖库,如下:

dependencies {    compile 'org.litepal.android:core:1.3.2'}

第二步. 配置litepal.xml

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

<?xml version="1.0" encoding="utf-8"?><litepal>    <!--       这里是你的android数据库的名字,可以直接写一个名称,框架会自动给你加上名       称.db,例如下面的例子的结果为生成一个userinf.db的数据库。例:         <dbname value="userinf" ></dbname>    -->    <dbname value="userinf" ></dbname>    <!--        这里是数据库的版本,就像我们使用SqliteOpenHelper建立数据库一样,第一次建        立数据库需要给数据库一个版本。如果想更新数据库的设置,只要在此基础上加1就可        以了。例:        <version value="1" ></version>    -->    <version value="1" ></version>    <!--        这里是实体类和数据库中的表的映射配置,一个类对应数据库中一张表,类中的一个字        段对应表中的一列。例:            <list>            <mapping class="com.tianlanse.mvpdemo.bean.UserBean"></mapping>        </list>    -->    <list> </list>    <!--        这个是定义数据userinf.db存储在哪里,有两个参数"internal"和"external"可        以选择。"internal"表示数据库存储在数据库文件夹的内部存储中,其他人不能访        问。"external"表示存储在外部的存储中,所有人可以访问。默认情况下        是"internal"。例:        <storage value="external"></storage>    --></litepal>

app文件夹目录的结构图如下:

这里写图片描述


第三步:配置LitePalApplication

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

<manifest>      <application          android:name="org.litepal.LitePalApplication"          ...      >      ...      </application>  </manifest>  

当然,有些程序可能会有自己的Application,并在这里配置过了。比如说有一个MyApplication,如下所示:

<manifest>      <application          android:name="com.example.MyApplication"          ...      >      ...      </application>  </manifest>  

没有关系,这时只需要修改一下MyApplication的继承结构,让它不要直接继承Application类,而是继承LitePalApplication类,就可以使用一切都能正常工作了,代码如下所示:

public class MyApplication extends LitePalApplication {      ...  }  

但是,有些程序可能会遇到一些更加极端的情况,比如说MyApplication需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。这种情况应该算是比较少见了,但是如果你遇到了的话也不用急,仍然是有解释方案的。你可以把LitePal的源码下载下来,然后把src目录下的所有代码直接拷贝到你项目的src目录下面,接着打开LitePalApplication类,将它的继承结构改成继承自AnotherApplication,再让MyApplication继承自LitePalApplication,这样所有的Application就都可以在一起正常工作了。

仅仅三步,我们就将所有的配置工作全部完成了,并且这是一件一本万利的事情,自此以后,你就可以开心地体验LitePal提供的各种便利了,就让我们从建表开始吧。


第四步:开始建表

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

是我们为什么要使用对象关系映射模式呢?这主要是因为大多数的程序员都很擅长面向对象编程,但其中只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则很好地解决了这个问题,它允许我们使用面向对象的方式来操作数据库,从而可以从晦涩难懂的SQL语言中解脱出来。

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

新建一个News类,news表中有id、title、content、publishdate、commentcount这几个列,那么在News类中就也应该有这几个字段,如下所示:

public class Person {    public int _id;    public String name;    public int age;    public String info;    // 自动生成get、set方法      ...  }  

其中id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列,毕竟每张表都一定要有主键的嘛。

这里我要特别说明一下,LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。

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

<?xml version="1.0" encoding="utf-8"?>  <litepal>      <dbname value="demo" ></dbname>      <version value="1" ></version>      <list>          <mapping class="com.example.Person"></mapping>      </list>  </litepal> 

注意这里一定要填入News类的完整类名。

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

SQLiteDatabase db = Connector.getDatabase();  

调用一下上述代码,news表就应该已经创建成功了。

在DDMS管理器中的file explorer下的data/data/包名/databases文件夹下回看到生成的数据demo.db,效果如下图:

这里写图片描述

导出数据库,用Sqlite expert工具打开userinf.db数据库后,查看userbean表效果如下:

这里写图片描述

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/38556989

阅读全文
0 0