安卓litepal数据库的使用详解以及一些常见BUG

LitePal基本使用:
前言:

  在安卓开发项目的时候我们会经常碰到一些需要做本地缓存或存放一些信息,这时我们就需要在本地做一个本地库,而有一些数据库操作太繁琐也经常会因为写错SQ语句而出现的各种BUG,博主在这里推荐大家使用LitePal数据库,博主也是在其它地方学到的这个数据库感觉挺好用!废话不多说我现在先教大家该如何去使用!

一,   首先在build.grdle里面导入以下依赖:



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


上面1.6.0是我项目中当前使用的版本,你们可以自己去更改你们所需要的版本


二,   在配置litepal.xml文件


如上图格式,在main下new -》Directory,创建一个assets目录,然后在底下创建一个litpal.xml文件,然后编辑litepal.xml文件:


文件里面代码如下:


<?xmlversion="1.0" encoding="utf-8"?>
<litepal>
    <!--数据库名-->
    <dbname value="vpdp_db" />
    <!--数据库版本号,升级数据库的时候只需要在此加1即可 -->
    <version value="9" />
    <!--你需要创建的表,只需要在此设定映射模型即可。
         当你的数据模型结构发生变化,需要数据库也跟着改变的时候,或者添加新的映射模型的时候,需要升级你的数据库版本-->
    <list>
        <mappingclass="com.example.litepaldb.UserNameBean_litepal"/>
        <mappingclass="com.example.litepaldb.TwoLevel_litepal"/>
        <mappingclass="com.example.litepaldb.OneLvel_litepal"/>
        <mappingclass="com.example.litepaldb.NtbInfos_litepal"/>
        <mappingclass="com.example.litepaldb.CarInfos_litepal"/>
    </list>
    <!--
       keep :按类和字段名大小写作为表名和列名
       upper :将所有的类和字段名称以大写的方式作为表明和列名。
       lower :将所有的类和字段名称以小写的方式作为表明和列名。
    -->
    <cases value="keep" ></cases>
    <!--
        external:如果设置external,数据库文件将储存在/storage/sdcard1/Android/data/应用包名/files/databases
                  如果是不想被别人查看的数据,最好不要设置external
                  在设置external的时候别忘了加权限<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/>
        internal:设置internal将把数据库存在应用内部文件夹,非本应用和root权限无法查看
        不设置则默认internal
    -->
    <storage value="internal" />
</litepal>


在你每次对数据库进行更改后一定要升级数据库版本号,如果不升级会出现数据库表找不到的错误等一些其他数据库错误!所以每次更改完数据库都去把版本号往上加一


三,最后一步就是在你的MyApplication里面继承LitepalApplication,代码如下:

以上就是配置整个litepal的操作,下面我们来讲一下它的一些基本用法,这里我直接粘代码了:

  一,创建表如下:



以上是模拟创建存放用户信息的表,你们可以根据自己的项目需求去创建相应的表,继承DataSupport这个时候表就已经创建出来了
二,将数据存放到表中,代码如下:


以上代码就是根据实际开发去存的操作,我们先将表名对象new出来,然后将你需要存的数据设置进对应的表内字段,记住相应的表存相应的字段,直接调用,然后set就好!最后调用save方法进行保存!注意:这里save方法每调用一次就会去存一次如果同样的字段你都调用了save方法会出现数据库里面数据重复的情况,这个时候可能会导致你获取出来的问题出现问题,所以在你要存储数据调用一次就行!

三,修改数据库的操作,代码如下:



以上是对数据库修改的操作,跟存储类似先new出表名,根据变量名调用updateAll方法,然后将你查询条件,进行修改你数据库内的数据!就比如我以上代码是根据这个表的ID和时间戳进行去查询,然后将修改的数据存到数据库中!注意:这里你的查询条件有几个,你后面跟的参数就有几个,比如我上面代码mDatas.get(position)是获取到position下的CarId代表的就是查询语句中的carId。PrefUtils.getLong(Constants.TIME_MILLS)+""这句代码代表的是我存在SP内的时间戳,它代表的是查询语句中的time
 
这是对数据库进行修改的操作

四,   对数据库中的数据进行删除操作


 1 DataSupport.deleteAll(Person.class,"age<?","10");//会把符合条件的数据删除掉2 

 2 DataSupport.deleteAll(//如果不约束条件,你就要删除表中所有数据 

删除跟其它的操作不一样不需要把表名new出来,可以直接用DataSupport去调用删除方法,我将我项目中的用法代码截图给你们,代码如下:

以上代码是我根据条件去删除数据库的操作,根据的是时间戳删除当前时间的数据,删除操作很简单方法里面前面放的是表名->中间是条件->最后是参数!
五,进行数据库查询操作
  这里查询数据库操作也很简单,我直接粘代码:


以上代码是查询数据库的操作,我们创一个集合出来,集合类型放的是你的表名,然后后面DataSupport.where是根据条件去查询后面放的是SQ条件查询语句,然后将语句中对应的参数写入,最后调用find方法里面传入你集合里面对应的class表,最后根据list的角标将数据拿出!
当然还有order,limit,offset方法了,具体我就不做介绍有兴趣的自己查阅

   结语:以上就是整个litepal的基本使用,和一些你们用的时候可能会出现的问题的原因,为了让大家更明白,我是根据我在实际开发中的代码去给大家讲解以及基本的应用,同时litepal还有一些操作,我这里就不一一给大家讲解了,基本这些操作就是你们常用的了!如果我有讲解不全之处和不对的地方,希望大家可以指正,我会不断去改正!
                                        谢谢大家!我会不断去努力,去学习!给大家带来更多的知识!如有不懂之处可以在下方评论出来,我会给你们解答!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值