execute
prawdopodobnie nie jest szybszy niż executeInsert
, może być nawet wolniejszy (w ICS execute
wywołuje executeUpdateDelete
i odrzuca zwracaną wartość). Musisz to przetestować, ale wątpię, czy znajdziesz tutaj prawdziwą różnicę.
AFAIK, Bezpiecznie jest użyć po prostu execute
jeśli nie potrzebujesz zwracanych wartości, ale nie liczyłbym na to, że będzie to prawdą w przyszłych wersjach Androida. Dokumentacja mówi nie, więc może ktoś zmieni zachowanie, aby to odzwierciedlić. Starsze implementacje wydają się używać execute
też (np. 2.1 delete()
kod źródłowy). Na przykład Jelly Bean bardzo się zmienił za kulisami SQLite, ale powinien nadal działać przy użyciu execute
Poza tym, jeśli nie używasz tego samego SQLiteStatement
w kółko, podczas gdy tylko zmieniamy argumenty, prawdopodobnie nie warto go używać. Tworzenie nowego za każdym razem, gdy wywołujesz zwykłe insert
, update
, ... jest szybki w porównaniu z rzeczywistym dostępem do bazy danych i wymaganym dyskowym wejściem/wyjściem. Z drugiej strony transakcje bardzo pomagają, ponieważ synchronizacja stanu bazy danych na dysku dla każdej instrukcji jest bardzo powolna.