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