LitePal是一款开源的Android数据库框架,它采用了对象映射关系(ORM)的模式,并将我们平时开发最常用的一些数据库功能进行了封装。
接下来我们就进行讲解LitePal数据库的操作方式:
1配置LitePal
2创建数据库
3升级数据库
4添加数据
5更新数据
6查询数据
7删除数据
1、配置LitePal
①首先新建一个工程,命名为LitePal(根据个人需求命名);
②在app/build.gradle文件中的dependencies闭包中添加代码
compile 'org.litepal.android:core:1.4.1'
③配置litepal.xml文件
右击app/src/main,New→Directory,如图所示。
将文件夹命名为assets,点击OK,如图所示。
在此文件夹下新建一个litepal.xml文件,右击assets文件夹New→File,如图所示。
命名为litepal.xml,点击OK,如图所示。
在litepal.xml文件中添加如下代码:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="BookStore"></dbname>
<version value="1"></version>
<list>
<mapping class="com.example.a86173.litepal.Book"></mapping>
</list>
</litepal>
dbname用于指定数据库名,com.example.a86173.litepal
不同电脑包名不同,在Activity中进行查询,Book为数据库名称,根据自己需求命名。
③修改Manifest.xml代码
在application中添加语句android:name="org.litepal.LitePalApplication"
配置LitePal到此就完成了。
2、创建数据库
相较于SQLite数据库,LitePal数据库在创建时so easy。不信你就看
①新建一个.java文件,命名为Book。定义一个book类
Book类中定义id、author(作者)、price(价格)、pages(页数)、name(书名),在Book类中添加如下代码:
public class Book {
private int id;
private String author;
private double price;
private int pages;
private String name;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getAuthor(){
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice(){
return price;
}
public void setPrice(double price) {
this.price = price;
}
public int getPages(){
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
public String getName(){
return name;
}
public void setName(String name) {
this.name = name;
}
}
②将Book类添加到litepal.xml中,在litepal.xml中list内添加代码:
<mapping class="com.example.a86173.litepal.Book"></mapping>
③在activity_main.xml中设计一个按钮,用于创建数据库,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.a86173.litepal.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="创建"
android:id="@+id/create" />
</LinearLayout>
④在MainAcitvity.java中编写代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button create=(Button)findViewById(R.id.create);
create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LitePal.getDatabase();
}
});
}
}
此时,创建数据库工作已经完成。
⑤通过运行虚拟手机进行测试,点击 创建 按钮
⑥通过adb shell查看数据库创建情况,按如下步骤进行操作
- Win+R:输入cmd进入命令行界面。
- 输入adb shell进入控制台。#代表超级管理员,$代表普通管理员,需要输入su命令切换成超级管理员
- 输入cd /data/data/com.example.a86173.litepal/databases/
- 输入ls
- 输入sqlite3 BookStore.db
- 输入schema
可以看到book表中的5列内容,创建数据库成功。
3、升级数据库
升级数据库则更加简单便捷,我们添加一张user表
①只需添加User类,步骤同创建数据库中的步骤①
在User类中添加代码
public class User {
private int id;
private String username;
private String password;
public int getId(){
return id;
}
public void setId(int id){
this.id=id;
}
public String getUsername(){
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword(){
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
②进入litepal.xml文件中,对其进行修改如下图所示
将版本号加1,添加新的映射模型,代码如下
<mapping class="com.example.a86173.litepal.User"></mapping>
③再次运行虚拟手机,点击 创建 按钮。
④通过命令行查看建表语句,升级成功,此时存在book和user两张表,如下图所示。
4、添加数据
①与SQLite数据库不同,LitePal数据库添加必须继承自DataSupport类。
因此修改Book类代码中最开始部分,将public class Book改为
public class Book extends DataSupport
User类与之相同。
②若向Book表中添加数据,则在MainActivity中补充代码
Button add=(Button)findViewById(R.id.add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Book book=new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPages(454);
book.setPrice(23.3);
book.save();
}
});
③在activity_mian.xml文件中设计添加Button,代码如下:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/add"
android:text="添加"/>
④再次运行虚拟手机,依次点击 创建 添加 按钮。
⑤通过命令行查看,添加成功,此时存在添加的书籍信息,如下图所示。
5、更新数据
更新数据要比添加数据稍微复杂一些,本篇只介绍一种常见更新方式。
①在MainActivity.java中补充代码如下
Button update=(Button)findViewById(R.id.update);
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Book book = new Book();
book.setPrice(14.95);
book.updateAll("name=? and author=?","The Da Vinci Code","Dan Brown");
}
});
②在activity_main.xml文件中设计更新Button,代码如下:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/update"
android:text="更新"/>
③再次运行虚拟手机,依次点击 创建 添加 更新 按钮。
④通过命令行查看更新语句,更新成功,此时价格由23.3变成14.95,如下图所示。
6、查询数据
①在MainActivity.java中补充代码如下
Button find=(Button)findViewById(R.id.find);
find.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<Book> books= DataSupport.findAll(Book.class);
for (Book book:books){
str1+="图书名称:"+book.getName()+";"+"\n" +"图书作者:"+book.getAuthor()+";"+"\n"+"图书页数:"+book.getPages()
+";"+"\n"+"图书价格:"+book.getPrice()+"\n";
}
TextView tv=(TextView)findViewById(R.id.tv);
tv.setText(str1);
}
});
②在activity_main.xml文件中设计查询Button,代码如下:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/find"
android:text="查询"/>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tv"/>
③再次运行虚拟手机,依次点击 创建 添加 更新 查询按钮,效果如下图所示。
7、删除数据
①在MainActivity.java中补充代码如下:
Button delete=(Button)findViewById(R.id.delete);
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DataSupport.deleteAll(Book.class,"price<?","15");
}
});
②在activity_main.xml文件中设计删除Button,代码如下:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/delete"
android:text="删除"/>
③再次运行虚拟手机,依次点击 创建 添加 更新 删除按钮。
④通过命令行查看,删除成功,此时没有任何书籍,如下图所示。
好啦,litepal数据库操作讲解到此就结束了,点击👉Android studio设计开发LitePal数据库源码可获得本次案例所有源码