LitePal是一个十分简单的开源库,使用LitePal数据库首先需要简单的配置下
1》编辑app/build.gradle
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.12'
compile 'org.litepal.android:core:1.3.2'
}
2》在main.java中新建文件夹assets,下新建litepal.xml,我新建了一个StudentScore类
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="StudentScore"></dbname>
<version value="2"></version>
<list>
<mapping class="com.example.litepaltest.Student_Score"></mapping>
</list>
</litepal>
3》在litepal.xml中添加类后,只要运行一次数据库操作系统就会自动建立数据表,若想更新升级数据库只需要修改类中的代码,然后改一下版本号version就可以
一,添加数据
若要对数据进行操作只需要调用类中的save函数即可,所以首先让我们写的类继承一下DataSupport
public class Student_Score extends DataSupport{
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setScore(double score) {
this.score = score;
}
public int getNum() {
return num;
}
public String getName() {
return name;
}
public void setNum(int num) {
this.num = num;
}
public double getScore() {
return score;
}
private int id;
private String name;
private double score;
private int num;
}
然后再main.java中
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Student_Score s=new Student_Score();
s.setName("王*宇");
s.setNum(20163489);
s.setScore(100.00);
s.save();
}
});
![](https://img2018.cnblogs.com/blog/1173734/201901/1173734-20190130031430702-1154918204.png)
二,更新数据
(1)使用相同的一个对象
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Student_Score s=new Student_Score();
s.setName("王宇");
s.setNum(20163489);
s.setScore(100.00);
s.save();
s.setName("王*思");
s.setNum(20163490);
s.save();
}
});
由于我们是先定义了一个s变量将其chucun,然后又再一次储存所以系统会认为是一个变量从而将之前储存的数据修改
(2)直接使用方法updateAll
b3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Student_Score s=new Student_Score();
s.setName("郭*");
s.setNum(2016391);
s.setScore(20.00);
s.updateAll("id = ?","2");
}
});
![](https://img2018.cnblogs.com/blog/1173734/201901/1173734-20190130032339499-107045792.png)
当你想把一个字段更新为默认值是updateall函数是不可以使用的但可以通过以下代码实现
/*
s.setToDefault(name);
s.updateAll();
*/
三,删除数据
删除数据只需要调用DataSupport.deleteAll函数即可
b4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DataSupport.deleteAll(Student_Score.class,"num < ?","20163390");
}
});
四,查询数据
litepal的查询相比SQLate简直简单了不是一点半点,只需要调用findall()函数便可
Button b5=(Button)findViewById(R.id.b5);
b5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
List<Student_Score> student_scores=DataSupport.findAll(Student_Score.class);
for(Student_Score student_score:student_scores){
Log.d(TAG, "学号: "+student_score.getNum());
Log.d(TAG, "姓名: "+student_score.getName());
Log.d(TAG, "成绩: "+student_score.getScore());
}
}
});
若想实现一个复杂的查询可以参考一下代码,以下代码是在Student_Score表中取出学号大于20163489的第20-30条数据并且按照学号升序排列
List<Student_Score> students=DataSupport.select("num","name","score")
.where("num > ?","20163489")
.order("num")
.limit(10)
.offset(20
).find(Student_Score.class);