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>
以上就是配置整个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方法了,具体我就不做介绍有兴趣的自己查阅