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

来源:互联网 发布:移动办公软件排名 编辑:程序博客网 时间:2024/06/06 17:05

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还有一些操作,我这里就不一一给大家讲解了,基本这些操作就是你们常用的了!如果我有讲解不全之处和不对的地方,希望大家可以指正,我会不断去改正!
                                        谢谢大家!我会不断去努力,去学习!给大家带来更多的知识!如有不懂之处可以在下方评论出来,我会给你们解答!

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子没有父爱怎么办 性格内向的小孩怎么办 家庭影响孩子怎么办 孩子脾气不好怎么办 妈妈脾气不好怎么办 儿子强势怎么办 孩子肚子疼怎么办 儿童敏感期怎么办 心里敏感脆弱怎么办 性格孤僻应该怎么办 邻居心肠黑怎么办 做错事情该怎么办 孩子哭闹时怎么办 妈妈得了抑郁症怎么办 孩子情绪不稳定怎么办 幼儿缺乏耐心怎么办 讨厌婆家人怎么办 家庭不和怎么办 怀孕心情不好怎么办 夫妻分居孩子怎么办 宝宝漾奶怎么办 孩子厌学怎么办swt 孩子性格叛逆怎么办 青少年心理障碍怎么办 心理有问题怎么办 心理有病怎么办 父母老是打架怎么办 父母打架严重怎么办 父母正在打架怎么办 跟爸打架怎么办 和父母吵架怎么办 儿子打父母怎么办 爸妈老吵架打架怎么办 爸妈打架怎么办 父母总干架怎么办 父母每天打架怎么办 父亲打母亲怎么办 爸妈吵架怎么办 不成熟的父母怎么办 被父母伤透心怎么办 妈妈智商低怎么办