在Android中可以使用SQLiteDatabase来操作SQLite数据库,但是有一种更加简单方便的方法,那就是使用LitePal。LitePal是一款开源的Android数据库框架,下面具体对LitePal的使用方法进行说明。
在使用LitePal之前需要对LitePal进行配置,分为下面三步:
1.导入LitePal库
编辑app/build.gradle文件, 在dependencies闭包中添加如下一行代码:compile 'org.litepal.android:1.4.1'。这样就把LitePal成功引入到项目当中了。
2.配置litepal.xml文件
右击app/src/main,目录—>NEW—>Directory,创建一个assets目录,然后在assets目录下新建一个litepal.xml文件,并往litepal.xml文件中添加如下代码:
<?xml version = "1.0" encoding = "utf-8"?>
<litepal>
<dbname value = "BookStore"></dbname>
<version values = "1"></version>
<list>
</list>
</litepal>
其中dbname 标签指定数据库名,version标签指定数据库版本号,list标签指定表名。
3.配置LitePalApplication
打开AndroidManifest.xml文件,在application标签内添加一行代码:android:name = "org.litepal.LitePalApplication"。这样LitePal的所有功能都可以正常工作了。
一. 创建和升级数据库:
1.创建数据库
在LitePal中,一张表对应着一个Java类,下面新建一个Book类,代码如下:
public class Book{
private int id;
private String author;
private String name;
private double price;
private int pages;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getAuthor(){
return author;
}
public void setAuthor(String author){
this.author = author;
}
public int getPages(){
return pages;
}
public void setPages(int pages){
this.pages= pages;
}
public double getPrice(){
return price;
}
public void setPrice(double price){
this.price= price;
}
}
代码很简单,在Book类中定义了6个字段,每个字段对应表中的一个列。并且每个字段都有一个get()和set()方法。用于获取和设置数据。这样一个Book类就对应了一张Book表。
定义完Book类之后还需要将类添加到litepal.xml中,打开litepal.xml文件,在list标签内添加一行代码:
<list>
<mapping class = "com.example.litepaltest.Book"></mapping>
</list>
在list标签内添加刚刚我们定义的Book类,这样在创建数据库的时候同时也会创建一张Book表。
2.升级数据库
假如我们想再添加一张Category表,那么只需要再新建一个Category类就可以了,代码如下:
public class Category{
private int id;
private String categoryName;
private int categoryCode;
public void setId(int id){
this.id = id;
}
public coid setCategoryName(String categoryName){
this.categoryName = categoryName;
}
public void setCategoryCode(int categoryCode){
this.categoryCode = categoryCode;
}
}
新建完Category类之后,同样将该类添加到litepal.xml文件中的list标签内:
<mapping calss = "com.example.litepaltest.Category"></mapping>
同时更改version标签的版本号:<version values = "2" ></version>
运行程序,此时数据库内就多了一个Category表了。
二. 使用LitePal进行添加(C)、更新(U)、删除(D)、查询数据(R)操作:
假设我们想要对Book表进行CUDR操作,首先需要在Book类中添加Book类的继承结构:
public class Book extends DataSupport{
...
}
这是因为要对表内数据进行操作需要继承DataSupport类。
1.添加数据
代码如下:
Book book = new Book();
book.setName("thinking of java");
book.setAuthor("jack");
book.setPages(454);
book.setPrice(18);
book.save();
首先创建一个Book类的实例,然后调用类中的各种set()方法来添加数据,最后再调用save()方法就能完成数据添加操作了。
2.更新数据
代码如下:
Book book = new Book();
book.setPrice(14);
book.updateAll("name = ? ","thinking of java");
通过调用Book类的updateAll()方法来更新数据,方法参数指定更新的对象。
3.删除数据
代码如下:
DataSupport.deleteAll(Book.class,"name = ?","thinking of java");
直接调用DataSupport类的deteleAll()方法来删除数据,deteleAll()方法第一个参数指定操作的表对象,第二个和第三个参数指定删除的对象。
4.查询数据
代码如下:
List<Book> books = DataSupport.findAll(Book.class);
for(Book book: books){
book.getName();
book.getAuthor();
book.getPages();
book.getPrice();
}
通过调用DataSupport类的findAll()方法来获取数据,findAll()方法返回值是一个Book类型的List集合,接下来再通过for循环和get()方法就可以得到表内的数据了。