更新数据
QLiteDatabase 中也是提供了一个非常好用的 update()方法用于对数据进行更新,这个方法接收四个参数,第一个参数和 insert()方法一样,也是表名,在这里指定去更新哪张表里的数据。第二个参数是 ContentValues 对象,要把更新数据在这里组装进去。第三、第四个参数用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
示例
修改 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 10 11 <Button android:id="@+id/update_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Update data" 12 13 /> 14 15 </LinearLayout>
修改MainActivity中的代码:
1 public class MainActivity extends Activity { 2 3 4 5 private MyDatabaseHelper dbHelper; 6 7 8 9 @Override 10 11 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 12 13 dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2); 14 15 …… 16 17 Button updateData = (Button) findViewById(R.id.update_data); 18 19 updateData.setOnClickListener(new OnClickListener() { 20 21 @Override 22 23 public void onClick(View v) { 24 25 SQLiteDatabase db = dbHelper.getWritableDatabase(); 26 27 28 29 ContentValues values = new ContentValues(); 30 31 values.put("price", 10.99); 32 33 db.update("Book", values, "name = ?", new String[] { "The DaVinci Code" }); 34 35 } 36 37 }); 38 39 } 40 41 }
这里在更新数据按钮的点击事件里面构建了一个 ContentValues 对象,并且只给它指定 了一组数据,说明我们只是想把价格这一列的数据更新成 10.99。然后调用了 SQLiteDatabase 的 update()方法去执行具体的更新操作,可以看到,这里使用了第三、第四个参数来指定具 体更新哪几行。第三个参数对应的是 SQL 语句的 where 部分,表示去更新所有 name 等于? 的行,而?是一个占位符,可以通过第四个参数提供的一个字符串数组为第三个参数中的每 个占位符指定相应的内容。因此上述代码想表达的意图就是,将名字是 The Da Vinci Code 的这本书的价格改成 10.99。