这里来完整地学习一下LitePal存储数据的所有用法。

1、在上一篇中我们只建了News一张表,如需要建多张表一样的操作,使用LitePal就可以把相应的表自动创建出来

2、继承了DataSupport类之后

这些实体类就拥有了进行CRUD操作的能力,那么比如想要存储一条数据到news表当中,可以这样:

 public void SaveData() {News n = new News();n.setId(1);//可不用这个IDn.setTitle("这里是标题");n.setContent("内容");n.setPublishDate(new Date());n.setCommentCount(1);Issave = n.save();//返回值}

很好操作的几行代码,这里不需要SQLiteDatabase,不需要ContentValues,不需要通过列名组装数据,甚至不需要指定表名,只需要new出一个News对象,然后把要存储的数据通过setter方法传入,最后调用一下save()方法就好了,而这个save()方法就是从DataSupport类中继承而来的了

看到了那个save()方法,save()方法还是有返回值的,我们可以根据返回值来判断存储是否成功

if (Issave) {Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "失败啦", Toast.LENGTH_SHORT).show();}

3、save()方法返回的是一个布尔值,用于表示存储成功还是失败,但同时也说明这个方法是不会抛出异常的。如果要存储失败的话就抛出异常,而不是返回一个false,那就还可以用另一个saveThrows()方法来代替

 public void SaveData() {News n = new News();n.setId(1);n.setTitle("这是标题");n.setContent("内容");n.setPublishDate(new Date());n.setCommentCount(1);n.saveThrows();}

saveThrows()方法来存储数据,一旦存储失败就会抛出一个DataSupportException异常,我们可以通过对这个异常进行捕获来处理存储失败的情况

4、使用的insert()方法来存储数据时是有返回值的,返回的是插入行对应的id。但LitePal中的save()方法返回的是布尔值,那么我要拿到存储成功之后这条数据对应的id,所以,LitePal使用了一种比较好的的做法,我们在每个实体类中都定义了一个id字段,当调用save()方法或saveThrows()方法存储成功之后,LitePal会自动将该条数据对应的id赋值到实体类的id字段上。

 public void SaveData() {News n = new News();n.setId(1);n.setTitle("这是标题");n.setContent("这是内容");n.setPublishDate(new Date());n.setCommentCount(1);Log.d("TAG", "ID是 " + n.getId());Issave = n.save();Log.d("TAG", "ID是 " + n.getId());}

这里在save之前打印一下news的id,在save之后再打印一次,然后运行:

在save之前打印的id,,在save之后打印的id,说明此时id已经被赋值了

5、LitePal对集合数据的存储还专门提供了一个方法,比如说我们有一个News集合,那么应该怎样去存储这个集合中的每条News

List<News> newsList;
...
for (News news : newsList) { news.save();
} 

那么通过一个循环来遍历出这个集合中的每一个News对象,然后逐个调用save()方法。这样的写法当然是可以的,但是效率会相对来说低一些,因为调用save()方法的时候除了会执行存储操作之外,还会去分析News类的关联关系,那么每次循环都去重新分析一遍关联关系显然是比较耗时的。因此,LitePal提供了一个saveAll()方法,专门用于存储集合数据的

List<News> newsList;
...
DataSupport.saveAll(newsList); 

saveAll()方法接收一个Collection集合参数,只需要把待存储的集合数据传入就可以。

DEMO下载:

CSDN:下载

百度网盘下载:下载  提取码:e1ey

LitePal数据的存储相关推荐

  1. android litepal可以指定存储目录吗,Android数据库LitePal的基本用法详解

    前言 正好项目用了这种数据存储方式,特地写一篇加深印象,在我看来,LitePal是使用最简单,集成最方便的数据库,没有之一. LitePal 简介 LitePal 是一款开源的 Android 数据库 ...

  2. Android数据持久化存储

    Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentP ...

  3. 云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE

    数据中心存储演化--FCoE   数据中心三大基础:主机 网络 存储 在云计算推动下,存储基础架构在发生演变 传统存储结构DAS.SAN在发展中遇到了布线复杂.能耗增多的缺点(原生性),需要对架构做根 ...

  4. Android学习 —— 数据的存储与访问方式一: 文件存取

    笔记摘要: 在Android中主要提供了四种数据存储与访问的方式,文件.SharedPreference(偏好参数保存).SOLite数据库.内容提供者(Content provider)和网络, 本 ...

  5. TableStore: 海量结构化数据分层存储方案

    2019独角兽企业重金招聘Python工程师标准>>> 前言 表格存储是阿里云自研分布式存储系统,可以用来存储海量结构化.半结构化的数据.表格存储支持高性能和容量型两种实例类型.高性 ...

  6. 详解 Python 如何将爬取到的数据分别存储到 txt、excel、mysql 中!

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 1. 页面分析 我爬取的页面是腾讯体育,链接如下: https://nba.stats.qq.com/player/list.htm 观察上图:左边展 ...

  7. tushare获取 保存_TuShare(2):使用TuShare,抓取股票数据并存储到数据库

    TuShare(2):使用TuShare,抓取股票数据并存储到数据库 1年前200 1,关于股票数据存储 股票数据比较特殊,需要做数据统计的.都需要一次进行批量查询多个数据,然后进行分析. 所以股票数 ...

  8. ztree树封装 json实例_小白7天入门PHP Web开发 - Day 6[下](综合)个人博客实例讲解用户数据的存储...

    <小白7天入门PHP Web开发>系列文章,面向单纯善良的完全不懂Web开发编程的入门速成课程,小白们如果感兴趣可以研读此系列文章,也可以连线提问.各路大神有何指教还请指点一二.希望各路大 ...

  9. iOS沙盒路径及路径下数据的存储和读取

    2019独角兽企业重金招聘Python工程师标准>>> iOS应用都被限制在"沙盒"中,"沙盒"相当于一个加了仅主人可见权限的文件夹,苹果对沙 ...

  10. opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类

    opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...

最新文章

  1. 关于网络唤醒远程开机的方法
  2. 如何按键对字典排序?
  3. bzoj 4557: [JLoi2016]侦察守卫 树归
  4. SpringBoot项目在IntelliJ IDEA中实现热部署 1
  5. log-malloc2 0.2.4 发布
  6. how to rank conferences or journals?
  7. 4.2.1 OS之磁盘的结构(磁盘、磁道、扇区、盘面、柱面、磁头)
  8. 接口自动化测试之PHPUnit-框架代码编写2
  9. Spring boot 默认静态资源路径与手动配置访问路径的方法
  10. C++基础复习——C++语言数据类型
  11. Linux三大共享文件的方法
  12. 【Word】一些实用的小技巧
  13. Mutex和上厕所居然有这么多异曲同工之妙
  14. 安装 Android Studio 2.3 详细过程及错误解决
  15. velocity 将数字转为以万为单位,保留2位小数
  16. windows下开发人员装机软件一览
  17. Delphi- repeate
  18. Slick.AI | 人工智能在智慧环保应用案例
  19. 计算机网络管理员中级试题及解析,计算机网络管理员中级考试题及答案(一)(1)...
  20. php 世界时间,PHP 时区列表[时差]

热门文章

  1. Vue将汉字转为拼音,取出首字母
  2. Excel VBA函数和过程调用方法总结(跨文件调用函数和过程)
  3. postSQL 正则表达式与like使用
  4. 【遥感影像处理与分析】遥感影像校正详解-辐射校正、几何校正流程与方法比较
  5. nekohtml转换html时标签变大写的问题
  6. awg线径与电流_AWG线径对照表
  7. Charles 基础使用
  8. plc用c语言编写程序,plc编程和c语言编程的联系
  9. 信息系统项目管理--案例分析笔记
  10. linux如何进入超级终端,使用telnet和超级终端登录控制Ubuntu