LitePal数据的存储
这里来完整地学习一下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数据的存储相关推荐
- android litepal可以指定存储目录吗,Android数据库LitePal的基本用法详解
前言 正好项目用了这种数据存储方式,特地写一篇加深印象,在我看来,LitePal是使用最简单,集成最方便的数据库,没有之一. LitePal 简介 LitePal 是一款开源的 Android 数据库 ...
- Android数据持久化存储
Android数据持久化存储共有四种方式,分别是文件存储.SharedPreferences.Sqlite数据库和ContentProvider.在本篇幅中只介绍前面三种存储方式,因为ContentP ...
- 云计算和大数据时代网络技术揭秘(八)数据中心存储FCoE
数据中心存储演化--FCoE 数据中心三大基础:主机 网络 存储 在云计算推动下,存储基础架构在发生演变 传统存储结构DAS.SAN在发展中遇到了布线复杂.能耗增多的缺点(原生性),需要对架构做根 ...
- Android学习 —— 数据的存储与访问方式一: 文件存取
笔记摘要: 在Android中主要提供了四种数据存储与访问的方式,文件.SharedPreference(偏好参数保存).SOLite数据库.内容提供者(Content provider)和网络, 本 ...
- TableStore: 海量结构化数据分层存储方案
2019独角兽企业重金招聘Python工程师标准>>> 前言 表格存储是阿里云自研分布式存储系统,可以用来存储海量结构化.半结构化的数据.表格存储支持高性能和容量型两种实例类型.高性 ...
- 详解 Python 如何将爬取到的数据分别存储到 txt、excel、mysql 中!
作者 | 黄伟呢 来源 | 数据分析与统计学之美 1. 页面分析 我爬取的页面是腾讯体育,链接如下: https://nba.stats.qq.com/player/list.htm 观察上图:左边展 ...
- tushare获取 保存_TuShare(2):使用TuShare,抓取股票数据并存储到数据库
TuShare(2):使用TuShare,抓取股票数据并存储到数据库 1年前200 1,关于股票数据存储 股票数据比较特殊,需要做数据统计的.都需要一次进行批量查询多个数据,然后进行分析. 所以股票数 ...
- ztree树封装 json实例_小白7天入门PHP Web开发 - Day 6[下](综合)个人博客实例讲解用户数据的存储...
<小白7天入门PHP Web开发>系列文章,面向单纯善良的完全不懂Web开发编程的入门速成课程,小白们如果感兴趣可以研读此系列文章,也可以连线提问.各路大神有何指教还请指点一二.希望各路大 ...
- iOS沙盒路径及路径下数据的存储和读取
2019独角兽企业重金招聘Python工程师标准>>> iOS应用都被限制在"沙盒"中,"沙盒"相当于一个加了仅主人可见权限的文件夹,苹果对沙 ...
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...
最新文章
- 关于网络唤醒远程开机的方法
- 如何按键对字典排序?
- bzoj 4557: [JLoi2016]侦察守卫 树归
- SpringBoot项目在IntelliJ IDEA中实现热部署 1
- log-malloc2 0.2.4 发布
- how to rank conferences or journals?
- 4.2.1 OS之磁盘的结构(磁盘、磁道、扇区、盘面、柱面、磁头)
- 接口自动化测试之PHPUnit-框架代码编写2
- Spring boot 默认静态资源路径与手动配置访问路径的方法
- C++基础复习——C++语言数据类型
- Linux三大共享文件的方法
- 【Word】一些实用的小技巧
- Mutex和上厕所居然有这么多异曲同工之妙
- 安装 Android Studio 2.3 详细过程及错误解决
- velocity 将数字转为以万为单位,保留2位小数
- windows下开发人员装机软件一览
- Delphi- repeate
- Slick.AI | 人工智能在智慧环保应用案例
- 计算机网络管理员中级试题及解析,计算机网络管理员中级考试题及答案(一)(1)...
- php 世界时间,PHP 时区列表[时差]