Używam skompilowany SQLiteStatement
z transakcji w optymalizacji transakcji SQLite ale czytam w dokumentacji funkcji execute
:SQLiteStatement wykonać SELECT/INSERT/DELETE/UPDATE
wykonać to SQL, jeśli nie jest to SELECT/INSERT/DELETE/UPDATE, na przykład CREATE/DROP tabela, widok, spust, indeksów itp
to zdaje się sugerować, że ta funkcja nie powinna być używana z SELECT/INSERT/DELETE/UPDATE
sprawozdania, ale Mam kod, który używa go z insertem i działa.
Jestem świadomy executeInsert
i innych metod, ale executeUpdateDelete
nie jest dostępny na moim poziomie interfejsu API, więc czy mogę użyć execute
?
Również jeśli nie potrzebuję ostatniego identyfikatora wkładki lub liczby uszkodzonych wierszy, czy powinienem używać execute
zamiast executeInsert
itd., Innymi słowy czy jest bardziej wydajny?
Oznacza to, że nie ma gwarancji, że 'execute()' zadziała w przyszłości również z instrukcją 'INSERT statement' również dokumenty są po prostu mylące powiedzą' Wykonaj instrukcję SQL, jeśli nie jest to SELECT/INSERT/.... "wtedy nie powinno się wykonywać' INSERT' (ponieważ jest to tylko testowany test) i działa! I dziękuję za cenne informacje :) –
Również 'statement.executeUpdateDelete();' to dostępne w API 11 jakieś obejście dla 2.2? –
@MuhammadBabar Dokumentacja próbuje powiedzieć, że metoda 'execute' nie jest przeznaczona dla instrukcji, które mają wynik. Podobnie jak zestaw wierszy dla zaznaczenia, liczba zmian dla aktualizacji/usunięcia lub ostatniego wiersza id dla wstawienia. Jak dotąd nie ma kodu, który uniemożliwiałby działanie tych niezamierzonych instrukcji. Może, nie wiem, przyszłe zmiany w architekturze bazy danych.Inżynierowie z Androidem mogą łatwo dodać taką zmianę bez powiadomienia, ponieważ opis metody ostrzega, że nie będzie działać od lat. – zapl