Android之使用LitePal操作数据库
在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()方法就可以得到表内的数据了。
上一篇: 神奇的JavaScript
下一篇: TCHS-3-250