Tworzę aplikację na Androida, która korzysta z bazy danych SQLite. Patrząc na klasę SQLiteDatabase stwierdziłem, że istnieje metoda o nazwie insertOrThrow()
, która jest podobna do insert()
, ale z jedną istotną różnicą - jeśli wstawianie się nie powiedzie, wyrzuci wyjątek i aplikacja zginie (jeśli nie zostanie złapana). Używam insertOrThrow()
w początkowej fazie rozwoju, ponieważ zwraca ona uwagę na błędy SQL w bardzo zauważalny sposób, tzn. Aplikacja umiera.
Jestem po prostu ciekawy: Dlaczego nie ma updateOrThrow()
, deleteOrThrow()
, itp ... Próbowałem google dla informacji, ale nie znaleziono niczego ...Dlaczego istnieje insertOrThrow, ale nie ma aktualizacji UpdateOrThrow lub deleteOrThrow?
8
A
Odpowiedz
1
myślę, że może to być spowodowane insert
i replace
są przeznaczone wpływać na pojedynczy wiersz. Może się wydawać, że lepiej jest rzucać, jeśli coś złego (np. Twój wiersz nie został wstawiony z powodu przymusu) dzieje się tutaj.
Dla delete
i update
dotyczy to wielu wierszy i nie jest nieprawidłowe dla tych zapytań, które mają wpływ na zero wierszy.
W obu przypadkach wyjątki będą zgłaszane z różnych powodów, takich jak nieprawidłowe zapytanie lub nieistniejąca tabela.
Powiązane problemy
- 1. Dlaczego `++ a ++` nie kompiluje się w C++, ale `(++ a) ++` ma?
- 2. Jak sprawdzić, czy istnieje parametr $ _GET, ale nie ma wartości?
- 3. Dlaczego nie ma IntStream.flatMapToObj()?
- 4. Dlaczego istnieje WeakHashMap, ale brakuje WeakSet?
- 5. Dlaczego TomEE Java EE6 ma certyfikat, ale TomEE + nie?
- 6. Dlaczego nie ma jednolitej_dystrybucji?
- 7. Dlaczego istnieje funkcja isNa() w JavaScript, ale nie jest niezdefiniowana()?
- 8. Dlaczego otrzymuję komunikat "MySQL nie działa, ale blokada istnieje"?
- 9. Lepszy sposób budowania skojarzeń has_one lub aktualizacji, jeśli istnieje.
- 10. Dlaczego nie ma obiektu StrongReference?
- 11. Dlaczego AlertDialog.Builder nie ma metod setOnDismissListener lub setOnShowListener?
- 12. Dlaczego nie ma std :: inplace_merge_unique?
- 13. Dlaczego Scala nie ma decltype?
- 14. Dlaczego Expression.And reprezentuje "&", ale nie "&&"
- 15. Zmiany stanu klasy ng, ale nie aktualizacji klas
- 16. Czy instalacja ładunkowa ma równoważne polecenie aktualizacji?
- 17. Dlaczego Xcode 6.3 beta debugger pokazuje, że Swift NSData ma liczbę bajtów wynoszącą 190, ale nie ma właściwości?
- 18. Dlaczego Mongoose nie sprawdza poprawności aktualizacji?
- 19. Dlaczego funkcja Collections.Generic.Queue nie ma metody zsynchronizowanej, ale funkcja Collections.Queue ma?
- 20. Dlaczego nie ma std :: stou?
- 21. Klasa istnieje, ale nie została znaleziona.
- 22. Jak sprawdzić tabelę istnieje lub nie istnieje
- 23. Dlaczego nie ma UTF-24?
- 24. Dlaczego nie ma std :: protect?
- 25. Dlaczego Python nie ma przełącznika?
- 26. Deque - dlaczego nie ma "rezerwy"?
- 27. Dlaczego SLComposeViewController nie ma delegata?
- 28. WPF DataGrid ma wiersz RowEditEnding, ale nie ma wiersza RowEditEnded
- 29. urllib.urlopen działa, ale urllib2.urlopen nie ma
- 30. NetworkInfo.isConnected() zwraca true, ale nie ma połączenia
Z tego punktu widzenia - tak, ma to sens. Początkowo myślałem, że InsertOrThrow() jest przydatna, gdy niektóre ograniczenia mogą zostać naruszone jak na przykład wyjątkowość, dlatego zastanawiałem się, dlaczego nie ma aktualizacjiOrThrow() ... – Ognyan
Jestem ciekawy również: P –