LitePal使用
来源:互联网 发布:微动力cms 编辑:程序博客网 时间:2024/06/04 20:10
一、使用LitePal相比SQLite的好处
1、不是使用繁杂的SQLite语句,直接使用对象
2、SQLite更新表,如添加先的表的时候,需要现将之前的表drop掉,这其实是个很严重的问题,之前表中保存的数据将被清理掉,而使用LitePal不会,更新表简单,更新后之前表保存的数据依然存在
二、LitePal的使用
知道了它的好处,那接下来我们一起来学习它的而是用吧
1、创建数据库
先写一个Bean,这个是关于书的bean,如下:
public class BookStoreBeen { private int id; private String author; private double price; private int pages; private String name; public void setId(int id){ this.id = id; } public int getId(){ return id; } public void setAuthor(String author){ this.author = author; } public String getAuthor(){ return author; } public void setPages(int pages){ this.pages = pages; } public int getPages(){ return pages; } public void setPrice(double price){ this.price = price; } public double getPrice(){ return price; } public void setName(String name){ this.name = name; } public String getName(){ return name; }}
然后在assets中创建litepal.xml,添加如下内容
<?xml version="1.0" encoding="utf-8"?><litepal> <dbname value="BookStore"/> <version value="1"/> <list> <mapping class="com.example.administrator.litepaldemo.BookStoreBeen"/> </list></litepal>
其中dbname代表的是创建的数据的库名字,version代表的是数据库的版本,list表的就是要创建的数据库,class里面就是上面创建的been的地址
准备条目做好了,接下来,开始创建数据库
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Connector.getDatabase(); } });}
通过DDMS将数据库导出,即可知道数据库创建成功
2、添加数据,添加一条书库的信息
先让之前的BookStoreBeen类继承DataSupport ,如下:
public class BookStoreBeen extends DataSupport{
开始添加:
Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { BookStoreBeen bookStoreBeen = new BookStoreBeen(); bookStoreBeen.setName("王五"); bookStoreBeen.setPrice(18.8); bookStoreBeen.setPages(16); bookStoreBeen.setAuthor("李四"); bookStoreBeen.save(); }});
添加很简单,new一个BookStoreBeen对象,将要保存的信息添加进去,最后调用save()方法,这个方法是继承DataSupport而来的,这样数据就添加成功了3、更新数据库
需要再添加一张表Person,been类如下:
public class PersonBeen { private int id; private String sex; private int age; private String name; public void setId(int id){ this.id = id; } public int getId(){ return id; } public void setName(String name){ this.name = name; } public String getName(){ return name; } public void setSex(String author){ this.sex = author; } public String getSex(){ return sex; } public void setAge(int age){ this.age = age; } public int getAge(){ return age; }}
更改litepal.xml内容如下:
<?xml version="1.0" encoding="utf-8"?><litepal> <dbname value="BookStore"/> <version value="2"/> <list> <mapping class="com.example.administrator.litepaldemo.BookStoreBeen"/> <mapping class="com.example.administrator.litepaldemo.PersonBeen"/> </list></litepal>
其中只要version的值比之前大即可,这里更改为2,将PersonBeen的地址添加入list中 开始更新数据库,同创建数据库:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Connector.getDatabase(); } }); }
再次导出数据库,发现多了一张表格,同时BookStoreBeen表中保存的数据依然存在,再这里就体现了,更新保存之前表的信息
4、更新数据
Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { BookStoreBeen bookStoreBeen = new BookStoreBeen(); bookStoreBeen.setName("张三"); bookStoreBeen.setPages(100); bookStoreBeen.updateAll("name = ? and pages = ?" , "王五" , "16"); }});
先new一个BookStroeBeen对象,将要更新的数据重新赋值,然后调用updateAll()方法,这里的"name = ? and pages = ? "是更新的条件,"王五" , "16"分别的name是王五,pages是16,满足这两个条件的数据进行更新,注意,如果updateAll()中不传入参数,则代表数据中所有的信息都更新5、删除数据
Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DataSupport.deleteAll(BookStoreBeen.class, "price < ?", "50"); }});
第一个参数,告诉删除的是那种表的数据,第二个参数代表的是删除的条件,第三个参数是条件的值,这句话是说删除BooKStoreBeen数据库中价格小于50的所有的数据,注意,如果不deleteAll不传入约束条件,整个表的数据全部被删除6、查询数据
Button button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { List<BookStoreBeen> all = DataSupport.findAll(BookStoreBeen.class); }});
查询表中的所有数据,这些数据直接就封装在了list中,不需要在通过Cursor了,很方便
下面是以下查询的别的语句:
查询第一条数据
BookStoreBeen first = DataSupport.findFirst(BookStoreBeen.class);
查询最后一条
BookStoreBeen last = DataSupport.findLast(BookStoreBeen.class);
如查询name和autor这两列的数据
List<BookStoreBeen> bookStoreBeens = DataSupport.select("name", "author").find(BookStoreBeen.class);
如查找页数大于50的数据
List<BookStoreBeen> bookStoreBeens = DataSupport.where("pages > ?", "50").find(BookStoreBeen.class);
如按照书价从高到低排序
List<BookStoreBeen> bookStoreBeens = DataSupport.order("price desc").find(BookStoreBeen.class);
从低到高排序,将desc换成asc
如从表中查前3条数据
List<BookStoreBeen> bookStoreBeens = DataSupport.limit(3).find(BookStoreBeen.class);
如查询第2,3,4条数据
List<BookStoreBeen> bookStoreBeens = DataSupport.limit(3).offset(1).find(BookStoreBeen.class);
还可以对5个方法任意的连缀组合
DataSupport.select("name" , "author" , "pages").where("pages > ?" , "400").order("pages").limit(10).offset(10).find(BookStoreBeen.class);
如果上诉的api满足不了需求,也可以使用SQLite语句来进行查询
Cursor cursor = DataSupport.findBySQL("select * from Book where pages > ? and price < ?", "20", "50");
- LitePal使用
- 使用LitePal升级表
- LitePal使用问题记录
- 学习LitePal使用
- LitePal使用总结
- Litepal的使用
- LitePal的简单使用
- litepal开源库的使用
- Litepal使用详解
- 使用LitePal操作数据库
- litepal的使用记录
- LitePal使用步骤
- LitePal的使用
- Litepal的简单使用
- Litepal的使用
- 使用LitePal操作数据库
- LitePal使用步骤
- 使用LitePal操作数据库
- 20170613Link
- Kotlin and Rxjava on Android
- 图像拼接算法总结(二)
- Oculus开通VR体验设计博客,为VR开发者分享经验教训
- DiskFileItemFactory的两个方法 .setSizeThreshold和.setRepository
- LitePal使用
- 【python 数据可视化 】饼图,箱线图,条形图,直方图,折线图,散点图
- MYISAM表损坏 通过mysqlcheck进行表修复
- POJ 3461 Oulipo hash求匹配
- 7.5 Django Book ---未完待续
- Android仿QQ侧滑菜单
- FastDFS学习笔记 -- day03 上传图片测试
- 生活告诉我选择正确的路可以走的更长远
- OpenFlow协议-整体结构和协议篇