使用LitePal操作数据库

54 篇文章 0 订阅

                                        使用LitePal操作数据库

配置:

1、app/build.gradle文件,在dependencies闭包添加compile 'org.litepal.android:core:1.3.2'

2、右击app/src/main目录-new-Directory,创建assets目录,在assets新建一个litepal.xml文件。

3、修改AndroidManifest.xml,在application闭包添加android:name="org.litepal.LitePalApplication"

创建数据库:

1、定义一个Book类,并写其属性的set和get方法

2、修改litepal.xml内容

<litepal>

<dbname value="BookStore" ></dbname>

<version value="1" > </version>

<list>

<mapping class="coe.example.litepaltest.Book"></mapping>

</list>

</litepal>

3、修改MainActivity代码

public void onClick(View v){

Connector.getDatabase();

}

升级数据库:

当需要添加多一个表时,不需要像之前SQLiteOpenHelper类那样,不用在update()方法里执行drop,只需要直接添加类,在litepal.xml里添加多一个map并把版本加1即可。

使用LitePal添加数据:

1、修改Book类,让Book类继承于DataSupport类

2、创建模型类的实例

Book book = new Book();

3、将所有要存储的数据设置好

book.setName("The Dan");

book.setAuthor("Jae");

4、调用save()方法

book.save(); //此方法是从DataSupport类中继承而来的。

使用LitePal更新数据:

有几种更新方式:

1、最简单的:对已存储的对象重新设值,然后重新调用save()方法即可。

Book book = new Book();

book.setName("The Dan");

book.setAuthor("Jae");

book.save();

book.setAuthor("JaeChan77"); // 将作者由Jae更新为JaeChan77

book.save();

2、更加灵巧的更新方式:

Book book = new Book();

book.setName("The Life");

book.setAuthor("cyj");

book.updateAll("name = ? and author = ?","The Dan","Jae"); //修改书名和作者

注意:当想把某一个字段的值更新成默认值时。不可以通过上面的set()方法。

Java中任何一种数据类型的字段都有默认值,int是0,boolean是false,String是null。

使用以下方法:

Book book = new Book();

book.setToDefault("pages"); //将书的页数都更新为默认值,即0

book.updateAll(); //没有指定约束条件,所有是针对所有书的页数都更新为0.

使用LitePal删除数据:

有几种更新方式:

1、最简单的:对已存储的对象调用delete()方法即可。

2、调用DataSupport.deleteAll(Book.class,"price < ?","15");

使用LitePal查询数据:

1、查询表里的所有字段数据:

SQLiteDatabase方式:Cursor cursor = db.query("Book",null,null,,null,null,null,null);

LitePal方式:List<Book> books = DataSupport.findAll(Book.class);

优点:返回值是一个Book类型的List集合,不需要像之前那样再通过Cursor对象一行行去取值了,Lit额Pal已经自动完成了赋值操作。

List<Book> books = DataSupport.findAll(Book.class);

for(Book book: books)

{

Log.d("MainActivity","book name is" + book.getName());

Log.d("MainActivity","book authoris" + book.getAuthor);

...

}

其他:

1、查询Book表中的第一条数据:Book firstBook = DataSupport.findfirst(Book.class);

2、查询Book表中的最后一条数据:Book lastBook = DataSupport.findlast(Book.class);

连缀查询:

1、select()方法:对应SQLiteDatabase的select关键字。

//只查name和author这两列数据:

List<Book> books = DataSupport.select("name","author").find(Book.class);

2、where()方法:对应SQLiteDatabase的where关键字。

//只查页数大于400的数据:

List<Book> books = DataSupport.where("pages > ","400").find(Book.class);

3、order()方法:对应SQLiteDatabase的order by关键字。

//将查询结果按照书价从高到低排序:

List<Book> books = DataSupport.order("price desc").find(Book.class);

注:desc表示降序排列,asc或者不写表示升序排列。

4、limit()方法:用于指定查询结果的数量

//比如只查表中的前3条数据

List<Book> books = DataSupport.limit(3).find(Book.class);

5、offset()方法:用于指定查询结果的偏移量

//比如查询表中的第2条、第3条、第4条数据:

List<Book> books = DataSupport.limit(3).offset(1).find(Book.class);

6、对以上5个方法进行任意的连缀组合:

List<Book> books = DataSupport.select("name","author","pages")

.where("pages > ","400")

.order("pages")

.limit(10)

.offset(10)

.find(Book.class);

//这段代码表示:查询Book表中第11-20条满足页数大于400这个条件的name、author和pages这3列数据,并将查询结果按照页数升序排列。

7、Litepal仍然支持使用原生的SQL来进行查询:

Cursor cursor = Datasupport.findBySQL("select * from Book where pages > ? and price < ?","40","20");

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值