2011-01-30 9 views
8

Estoy creando una aplicación de Android que usa la base de datos SQLite. Mirando la clase SQLiteDatabase encontré que hay un método llamado insertOrThrow() que es similar a insert() pero con una diferencia importante: si la inserción falla, lanzará una excepción y la aplicación morirá (si no está atrapada). Estoy usando insertOrThrow() en la etapa inicial del desarrollo porque atrae mi atención sobre los errores de SQL de una manera muy notable, es decir, la aplicación muere.
Tengo curiosidad: ¿Por qué no updateOrThrow(), deleteOrThrow(), etc ... He tratado de google para obtener información, pero no encontré nada ...¿Por qué hay insertOrThrow pero no updateOrThrow o deleteOrThrow?

Respuesta

1

yo creo que puede ser debido a insert y replace están destinados para afectar una sola fila. Puede tener más sentido arrojar si algo malo (como que tu fila no se insertó realmente debido a una restricción) sucede aquí.

Para delete y update varias filas se ven afectadas, y no es anormal que ninguna fila se vea afectada por estas consultas.

En cualquier caso, se lanzarán excepciones por una variedad de razones, como una consulta mal formada o una tabla inexistente.

+0

Desde ese punto de vista, sí, tiene sentido. Inicialmente estaba pensando que InsertOrThrow() es útil cuando algunas restricciones pueden ser violadas, como la singularidad, por ejemplo, es por eso que me preguntaba por qué no hay updateOrThrow() ... – Ognyan

+0

Tengo curiosidad también: P –

Cuestiones relacionadas