2011-01-30 11 views
8

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?

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.

+0

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

+0

Jestem ciekawy również: P –

Powiązane problemy