转发郭神的blog,讲的非常详细,是基于1.6版本,但现在使用的是2.0,有点差别
https://blog.csdn.net/guolin_blog/article/details/38461239
1.首先说一下常用查看数据库adb命令
手机root后 adb shell ->cd data/data/
ls 展示列表 cd进入应用 cd databases进入数据库
sqlite3 demo.db注意选择有.db文件
.table 展示数据库表格
.mode line 列表形式展示数据
pragma table_info(表名); 注意要有分号 查看表格列信息
select * from 表名; 查看添加内容
ctrl+d 退出sqlite

2.配置
(1)在app module dependencies导入

implementation 'org.litepal.android:java:3.0.0'

(2)在src->main->assets 添加litepal.xml。一定要新建文件+写扩展名的形式,不要直接新建xml

<?xml version="1.0" encoding="utf-8" ?>
<litepal><dbname value="demo" ></dbname><version value="6" ></version><list><mapping class="com.tayh.litepaldemo.News"></mapping><mapping class="com.tayh.litepaldemo.Comment"></mapping><mapping class="com.tayh.litepaldemo.Introduction"></mapping><mapping class="com.tayh.litepaldemo.Category"></mapping></list>
</litepal>

(3)MyApplication 可以直接继承Application ,初始化LitePal就可以了

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();LitePal.initialize(this);}
}

(4)Activity 调用数据库语句

 SQLiteDatabase db = Connector.getDatabase();

(5)News 与Introduction 一对一 外键news_id生成在Introduction里,News本身并没有key,这个需要理解一下。News与Category 多对多,生成key在新生成的category_news表中

public class News extends LitePalSupport {private int id;private String title;private String content;private Date publishDate;private int commentCount;private Introduction introduction;//一对一 外键生成在Introduction表里private List<Comment> commentList = new ArrayList<Comment>();//一对多private List<Category> categoryList = new ArrayList<Category>();//多对多}
public class Introduction extends LitePalSupport {private int id;private String guide;private String digest;
}
public class Comment extends LitePalSupport {private int id;private String content;private Date publishDate;private News news;//多对一}
public class Category extends LitePalSupport {private int id;private String name;private List<News> newsList = new ArrayList<News>();//多对多
}


3.增删改查CRUD
(1)存储
* save()方法用于数据储存,返回值为是否存储成功
saveThrows() 存储失败抛出异常
news.getId() 可以获取到储存id

     Comment comment1 = new Comment();comment1.setContent("comment1");comment1.setPublishDate(new Date());comment1.save();News news = new News();news.setTitle("news1");news.setContent("content1");news.setPublishDate(new Date());news.getCommentList().add(comment1);news.setCommentCount(news.getCommentList().size());news.save();


*也可存储集合

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

(2)更新
有两种方式:
方式一:使用ContentValue

 ContentValues values = new ContentValues();values.put("title","test1");//title 列名LitePal.update(News.class,values,1);//1 是更新列的id//LitePal.update(News.class,values);//更新所有

条件更新:

 ContentValues values = new ContentValues();values.put("title","test2");       LitePal.updateAll(News.class, values, "title = ? and commentcount > ?", "test1", "0");

方法二:数据直接更新

  News updateNews = new News();updateNews.setTitle("test0");updateNews.update(1);//id

条件更新:

        News updateNews = new News();updateNews.setTitle("test1");updateNews.updateAll("title = ? and commentcount > ?", "test0", "0");

注意:如果要恢复默认值使用setToDefault ,set 0无效

 News updateNews = new News();updateNews.setToDefault("commentCount");//commentCount列恢复默认值updateNews.updateAll();

(3)删除
删除数据的同时,会把该列id作为外键的关联表的数据一起删除

 int deleteCount = LitePal.delete(News.class, 1);//id 1// LitePal.deleteAll(News.class, "title = ? and commentcount = ?", "test1", "0");

判断持久化方法,即是否存到数据库

if (news.isSaved()) {news.delete();
}

(4)查询
*查询第一个或最后一个

News firstNews = LitePal.findFirst(News.class);
News lastNews = LitePal.findLast(News.class);

*按照多个id查询

 List<News> newsList = LitePal.findAll(News.class, 0, 2);
//方法二
long[] ids = new long[] { 0, 1};
List<News> newsList2 = LitePal.findAll(News.class, ids);

*按照条件查询

 //查询news表,条件为commentcount >0 ,只要 title content列的数据 ,降序 ,limit(10) 前10条 ,offset(10)偏移量10 即11-20条数据List<News> newsList3 = LitePal.select("title", "content").where("commentcount > ?", "0").order("publishdate desc").limit(10).offset(10).find(News.class);

激进查询
方法一:设置为true,查出news关联表的数据,不推荐,比较慢

 News news = LitePal.find(News.class, 1, true);List<Comment> commentList = news.getCommentList();

方法二:News表增加getComments()方法。然后需要时再获取list


public class News extends LitePalSupport{... public List<Comment> getComments() {return LitePal.where("news_id = ?", String.valueOf(id)).find(Comment.class);} }
News news2 = LitePal.find(News.class, 1);List<Comment> commentList2 = news2.getComments();

*原生查询

 Cursor cursor = LitePal.findBySQL("select * from news where commentcount>?", "0");
  • 1

4.聚合函数
LitePal中一共提供了count()、sum()、average()、max()和min()这五种聚合函数

        //统计行数int result = LitePal.count(News.class);// int result1 = LitePal.where("commentcount = ?", "0").count(News.class);//结果求和int result2 = LitePal.sum(News.class, "commentcount", int.class);//结果求平均double result3 = LitePal.average(News.class, "commentcount");//求最大值int result4 = LitePal.max(News.class, "commentcount", int.class);//求最小值int result5 = LitePal.min(News.class, "commentcount", int.class);

转载于:https://www.cnblogs.com/geili/p/10211522.html

LitePal 数据库使用方法(最新2.0LitePal数据库适用)相关推荐

  1. mysql数据库导入方法_MySQL导入导出数据库方法介绍

    我们都知道不管是在于windows系统还是在linux环境中MySQL数据库的导入分为有两种1) 先导出数据库SQL脚本,再导入:2) 直接拷贝数据库目录和文件. 操作方法 1,进入MySQL目录下的 ...

  2. PHP连接mysql数据库使用方法,PHP连接MySQL数据库的操作方法

    下面是小编给大家分享的一篇PHP连接MySQL数据库的操作方法,或许能开阔眼界,增长见识,体验乐趣,下面就跟随中国E盟技术频道的编辑一起来看看. 关于PHP与MySQL的合作,不外乎以下三种方法: 1 ...

  3. c mysql备份还原数据库,MySQL数据库备份与恢复方法

    常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法: (1)备份数据库文件 MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件. 在Linux下数据库文件的存放目录一般为/ ...

  4. asp adodb连接mysql数据库语句_ASP连接MySQL数据库的方法

    ASP连接MySQL数据库的方法 ASP连接MySQL数据库的方法 ASP等语言连接mysql数据库,可以通过安装mysql的ODBC驱动,通过配置ODBC数据源,连接并操作数据库. mysql od ...

  5. Oracle数据库设计方法

    数据库设计师建立数据库及应用系统的技术,是信息系统开发和建设中的核心技术,具体来说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,使之能够有效存储数据,满足各种用户 ...

  6. mysql db 备份,MySQL数据库备份与恢复方法

    常有新手问我该怎么备份数据库,下面介绍3种备份数据库的方法: (1)备份数据库文件 MySQL中的每一个数据库和数据表分别对应文件系统中的目录和其下的文件. 在Linux下数据库文件的存放目录一般为/ ...

  7. mysql数据备份方法_最快的MySql数据库备份方法

    最快的MySql数据库备份方法 使用MYSQL进行数据库备份,又很正规的数据库备份方法,同其他的数据库服务器有相同的概念,但有没有想过,MySQL会有更简捷的使用文件目录的备份方法,而且又快有好. 一 ...

  8. oracle不能关闭,Oracle shutdown immediate无法关闭数据库解决方法

    在测试服务器上使用shutdown immediate命令关闭数据库时,长时间无法关闭数据库,如下所示 1: [oracle@DB-Server admin]$ sqlplus / as sysdba ...

  9. php访问mysql数据库实验报告,php访问mysql数据库

    //建一个连接,造一个连接对象 $db = new MySQLi("localhost","root","123","mydb&q ...

  10. 异构数据库、异构数据源、分布式数据库三者的辨析区别

    异构数据库:HDB Heterogeneous DataBase 异构数据库系统是相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自 ...

最新文章

  1. HRFormer 多分辨率Transformer 参数骤降,性能更强
  2. 图解Oracle存储过程教程
  3. 3.10 程序示例--神经网络设计-机器学习笔记-斯坦福吴恩达教授
  4. 抢红包的红包生成算法
  5. 文献学习(part14)--Structural Deep Network Embedding
  6. 【平面设计】扁平化设计(Ⅲ)——原则
  7. 现代通信原理2.3:为什么我们这么关注傅立叶变换?
  8. python判断素数的函数_python判断是否为素数
  9. 如何理解 Java 中的继承?
  10. Web前端html表格制作
  11. k8s(十三)、企业级docker仓库Harbor在kubernetes上搭建使用
  12. IDEA清除Local History
  13. python包NetworkX学习——最短路径dijkstra_path和dijkstra_path_length
  14. ACCV 结果出来了,大家来晒一晒吧~
  15. 笔记本固态硬盘和普通硬盘的区别
  16. MATLAB系列笔记:修改编辑器颜色为护眼色(绿豆沙)
  17. 生物信息学概论_生物信息学 | 技术与多学科融合,贝勒走在时代发展的前端
  18. 选SSD就是选闪存颗粒!全面解析原片/白片/黑片
  19. 数据库课程设计 python+mysql+图形化界面
  20. php ajaxfileupload.js 使用,ajaxfileupload.js实现文件上传(附步骤代码)

热门文章

  1. Pycharm中更改镜像源
  2. 语言abline画不出线_北师大版八下数学 2.1不等关系 知识点精讲
  3. php redis返回值,PHP 中redis常用方法
  4. Bar函数--Matplotlib
  5. 阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点...
  6. 前端 docker + gitlab CI 的持续集成(二)
  7. Xcode 高级调试技巧
  8. 【Python学习笔记】集合set
  9. Imc手机连环画PC阅读器
  10. 搭建邮件系统,采用sendmail+dovecot+openwebmail架构