本篇文章还是在LitePal之更新数据 的基础上进行修改,使用LitePal删除数据的方式主要有两种,第一种比较简单,就是直接调用已存储对象的delete()方法就可以了,对于已存储对象的概念,在更新数据这一篇说过,也就是说,调用过save()方法的对象,或者是通过LitePal提供的查询API查出来的对象,都是可以直接使用delete()方法来删除数据的,这种方式比较简单,就不做例子了,看一下另外一种删除数据的方式,
修改activity_main.xml中的代码,如下:
<?xml version="1.0" encoding="utf-8"?>仍然是在布局中添加了一个按钮,用于删除数据,然后修改MainActivity中的代码,如下:
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.activitytest.MainActivity">
...
<Button
android:id="@+id/dalete_database"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete database"
android:textAllCaps="false"
app:layout_constraintTop_toBottomOf="@id/update_database"/>
</android.support.constraint.ConstraintLayout>
public class MainActivity extends AppCompatActivity {这里调用了DataSupport。deleteAll()方法来删除数据,其中deleteAll()方法的第一个参数用于指定删除哪张表中的数据,Book.class就意味着删除Book表中的数据,后面的参数用于指定约束条件,那么这行代码的意思就是,删除Book表中价格低于15的书,正好目前Book表中有两本书,一本价格是16.96,一本价格是14.95,刚好可以看出结果。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
Button deleteDatabase = findViewById(R.id.dalete_database);
deleteDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DataSupport.deleteAll(Book.class,"price < ?","15");
}
});
}
}
现在重新运行程序,并点击一个Delete database按钮,然后查询表中的数据情况,如下:
可以看到,价格低于15的那本书已经被删除掉了。
另外,deleteAll()方法如果不指定约束条件,就意味着删除表中的所有数据。