使用LitePal刪除數據的方式主要有兩種,第一種就是直接調用已存對象的delete()方法,所謂已存儲對象就是調用過save()方法的對象,或者說是通過LitePal提供的查詢API查出來的對象,都是可以直接使用delete方法來刪除對象的。這是比較簡單的方式。我演示用另一種刪除數據的方式。
接下來, 我們設定一個輸入框和一個按鈕,刪除輸入框中指定的數據。其中我們需要獲取輸入框的實例,即你輸入的內容,然后我們根據你輸入的內容,去刪除可以和數據庫內匹配的對象。(發現刪除數據后,再添加數據,sqlite中的id并不是從1開始,而是從上一回的數據的外下排,比如沒刪除前,表中最后一個對象的id為39,刪除表內所有數據后,新增一個對象的id為40,但是此時表內只有一個數據對象)。
package com.example.testappb;import android.content.Intent;
import android.provider.ContactsContract;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;import org.litepal.crud.DataSupport;import java.util.List;public class RegisterActivity extends AppCompatActivity {private EditText DtelEdit;private EditText DpasswordEdit;private Button querenzhuce;private Button zhucefanhui;//聲明刪除信息private EditText edittext_shanchu;private Button button_shanchu;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.register_layout);//獲取輸入框的實例DtelEdit = (EditText)findViewById(R.id.edittext_Dtel);DpasswordEdit = (EditText)findViewById(R.id.edittext_Dpassword);....edittext_shanchu = (EditText)findViewById(R.id.edittext_shanchu);button_shanchu = (Button)findViewById(R.id.button_shanchu); button_shanchu.setOnClickListener(new View.OnClickListener() {//獲取輸入的信息后轉化為字符串String edittextshanchu = DtelEdit.toString();@Overridepublic void onClick(View view) {//// List<Driveruser> driveruers = DataSupport.findAll(Driveruser.class);//for(Driveruser driveruser:driveruers) {//if ((driveruser.getDtel().toString()).equals(edittextshanchu)) {//DataSupport.deleteAll(Driveruser.class,"Dtel ==?","edittextshanchu");//driveruser.save();DataSupport.deleteAll(Driveruser.class);Toast.makeText(RegisterActivity.this,"刪除成功",Toast.LENGTH_SHORT).show();return;}});}
}
鑒于我們之前設置表內字段數據類型的局限性,我們想要從Sqlite數據中刪除某一個特定數據的話,現在還無法實現,因為我之前建立的Driveruser表內只有兩個字段,一個是手機號(Dtel)和密碼(Dpassword),這兩個字段都是設置為String類型,String類型的數據來匹配的話,是通過equals方法來比較的,但是又由于deleteAll()方法內參數的限制,我們暫時還無法實現刪除某一特定的對象,不過我們可以刪除整個表內的數據。就如DataSupport.delteAll(Driveruser.class)。delete方法內沒有設置其參數。就表示要刪除Driveruser表中所有的數據。和updateAll()方法是類似的。其中delete()方法中有三個參數,第一個參數用于指定刪除哪張表中的數據,Driveruser.class就意味著刪除Book表中的數據。第二個參數用于指定約束條件。例如:DataSupport.deleteAll(Book.class,"price<?","15");意思就是:刪除Book表中price低于15的書。其中?是一個占位符。