12.1.3. 更新数据

优质
小牛编辑
126浏览
2023-12-01

12.1.3.更新数据

通过Content Provider的接口更新数据,我们需要:

Content Provider的URI

其中的ID可选。如果提供,则更新ID对应的记录。如果省略,则表示更新多条记录,并需要提供一个选择条件。

待更新的值

这个参数的格式是一组键值对,表示待更新的列名与对应的值。

选择条件

这些条件组成了SQL语句的WHERE部分,选择出待更新的记录。如果URI中提供了ID,这些条件就会被省略。

考虑到URI中是否存在ID的两种情况,代码如下:

@Override

public int update(Uri uri, ContentValues values, String selection,

String[] selectionArgs) {

long id = this.getId(uri); //

SQLiteDatabase db = statusData.dbHelper.getWritableDatabase(); //

try {

if (id < 0) {

return db.update(StatusData.TABLE, values, selection, selectionArgs); //

} else {

return db.update(StatusData.TABLE, values, StatusData.C_ID + "=" + id, null); //

}

} finally {

db.close(); //

}

}

  1. 使用辅助方法getId()获取URI中的ID。如果URI中不存在ID,此方法返回-1。getId()的定义在本章后面给出。
  2. 打开数据库,写入模式。
  3. 如果不存在ID,则按照选择条件筛选待更新的所有条目。
  4. 如果存在ID,则使用ID作为WHERE部分的唯一参数,限制只更新一条记录。
  5. 永远不要忘记关闭数据库。