12.1.2. 插入数据

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

12.1.2.插入数据

要通过Content Provider插入记录,我们需要覆盖insert()方法。调用者需要提供Content Provider的URI(省略ID)和待插入的值,插入成功可以得到新记录的ID。为此,我们将新记录对应的URI作为返回值。

@Override

public Uri insert(Uri uri, ContentValues values) {

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

try {

long id = db.insertOrThrow(StatusData.TABLE, null, values); //#2

if (id == -1) {

throw new RuntimeException(String.format(

"%s: Failed to insert [%s] to [%s] for unknown reasons.", TAG,

values, uri)); //#3

} else {

return ContentUris.withAppendedId(uri, id); //#4

}

} finally {

db.close(); //#5

}

}

  1. 打开数据库,写入模式。
  2. 尝试将数据插入,成功的话将返回新记录的ID。
  3. 插入过程中若出现失败,则返回-1。我们可以抛出一个运行时异常,因为这是个不该发生的情况。
  4. 永远不要忘记关闭数据库。finally子句是个合适地方。