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?
8
A
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.
Cuestiones relacionadas
- 1. ¿Por qué no hay byte o literales cortos en Java?
- 2. ¿Por qué no hay Dictionary.TrimExcess()?
- 3. ¿Por qué no hay operadores || = o && = en C#?
- 4. myView.frame.origin.x = value; no funciona, pero ¿por qué?
- 5. ¿Por qué $() no funciona pero funciona jQuery()?
- 6. Por qué atribuir "deshabilitado" pero no "habilitado"
- 7. ¿Por qué no hay un String # shift()?
- 8. ¿Por qué no hay método Service.onStop?
- 9. ¿Por qué no hay isFocused() en GWT?
- 10. ¿Por qué no hay ReverseEnumerator en C#?
- 11. ¿Por qué no hay List.skip y List.take?
- 12. ¿Por qué no hay boost :: filesystem :: move_file?
- 13. ¿Por qué no hay llamadas al constructor?
- 14. ¿Por qué hay compilaciones de depuración y liberación para .Net, pero no para Java?
- 15. ¿Por qué no hay std :: stou?
- 16. ¿Por qué no hay un documento.createHTMLNode()?
- 17. ¿Por qué este código no se define pero no 2?
- 18. ¿Por qué hay una conversión implícita de Float/Double a BigDecimal, pero no de String?
- 19. ¿Por qué hay una instancia predeterminada de cada formulario en VB.Net pero no en C#?
- 20. ¿Por qué no hay strtoi en stdlib.h?
- 21. ¿Por qué no hay Xcode para Windows?
- 22. ¿Por qué no hay impulso :: copy_on_write_ptr?
- 23. por qué no hay sizeof en java
- 24. ¿Por qué no hay un método Convert.toFloat()?
- 25. ¿Por qué no hay UTF-24?
- 26. ¿Por qué SwingWorker? ¿Por qué no solo Thread o Runnable?
- 27. ¿Por qué no está LinkedList.Clear() O (1)
- 28. ¿Por qué usar rutinas FreeMem/Dispose para liberar memoria, pero no hay memoria reducida?
- 29. ¿Por qué las tuplas tienen uses_allocator pero los pares no?
- 30. Ruby require 'file' no funciona, pero requiere './file'. ¿Por qué?
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
Tengo curiosidad también: P –