删除数据
SQLiteDatabase 中提供了一个 delete()方法专门用于删除数据,这个方法接收三个参数,第一 个参数仍然是表名,,第二、第三个参数又是用于去约束删除某一 行或某几行的数据,不指定的话默认就是删除所有行。
实例:
修改 activity_main.xml 中的代码:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" 2 3 android:orientation="vertical" > 4 5 …… 6 7 8 9 <Button android:id="@+id/delete_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Delete data" 10 11 /> 12 13 </LinearLayout>
修改 MainActivity 中的代码:
1 public class MainActivity extends Activity { 2 3 4 5 private MyDatabaseHelper dbHelper; 6 7 8 9 10 11 @Override 12 13 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 14 15 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); 16 17 …… 18 19 Button deleteButton = (Button) findViewById(R.id.delete_data); 20 21 deleteButton.setOnClickListener(new OnClickListener() { 22 23 @Override 24 25 public void onClick(View v) { 26 27 SQLiteDatabase db = dbHelper.getWritableDatabase(); 28 29 db.delete("Book", "pages > ?", new String[] { "500" }); 30 31 } 32 33 }); 34 35 } 36 37 38 39 }
可以看到,我们在删除按钮的点击事件里指明去删除 Book 表中的数据,并且通过第二、 第三个参数来指定仅删除那些页数超过 500 页的书籍。当然这个需求很奇怪,这里也仅仅是 为了做个测试。你可以先查看一下当前 Book 表里的数据,其中 The Lost Symbol 这本书的页 数超过了 500 页,也就是说当我们点击删除按钮时,这条记录应该会被删除掉。