android: SQLite更新数据

学习完了如何向表中添加数据,接下来我们看看怎样才能修改表中已有的数据。 SQLiteDatabase 中也是提供了一个非常好用的 update()方法用于对数据进行更新,这个方法 接收四个参数,第一个参数和 insert()方法一样,也是表名,在这里指定去更新哪张表里的数据。第二个参数是 ContentValues 对象,要把更新数据在这里组装进去。第三、第四个参数

用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。 那么接下来我们仍然是在 DatabaseTest 项目的基础上修改,看一下更新数据的具体用法。

比如说刚才添加到数据库里的第一本书,由于过了畅销季,卖得不是很火了,现在需要通过 降低价格的方式来吸引更多的顾客,我们应该怎么操作呢?首先修改 activity_main.xml 中的 代码,如下所示:

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical" >

 

……

 

<Button android:id="@+id/update_data" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Update data"

/>

</LinearLayout>

布局文件中的代码就已经非常简单了,就是添加了一个用于更新数据的按钮。然后修改

MainActivity 中的代码,如下所示:

 

public class MainActivity extends Activity {

 

private MyDatabaseHelper dbHelper;

 

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);

……

Button updateData = (Button) findViewById(R.id.update_data);

updateData.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

 

ContentValues values = new ContentValues();

values.put("price", 10.99);

db.update("Book", values, "name = ?", new String[] { "The DaVinci Code" });

}

 

});

}

 

}

这里在更新数据按钮的点击事件里面构建了一个 ContentValues 对象,并且只给它指定 了一组数据,说明我们只是想把价格这一列的数据更新成 10.99。然后调用了 SQLiteDatabase 的 update()方法去执行具体的更新操作,可以看到,这里使用了第三、第四个参数来指定具 体更新哪几行。第三个参数对应的是 SQL 语句的 where 部分,表示去更新所有 name 等于? 的行,而?是一个占位符,可以通过第四个参数提供的一个字符串数组为第三个参数中的每 个占位符指定相应的内容。因此上述代码想表达的意图就是,将名字是 The Da Vinci Code 的这本书的价格改成 10.99。

现在重新运行一下程序,界面如图 6.23 所示。

图   6.23

 

点击一下 Update data 按钮后,再次输入查询语句查看表中的数据情况,结果如图 6.24所示。

图   6.24

 

可以看到,The Da Vinci Code 这本书的价格已经被成功改为 10.99 了。

posted @ 2016-03-03 14:47  dodo-yufan  阅读(...)  评论(... 编辑 收藏