W mojej aplikacji Android muszę wstawić dane do kilku tabel SQLite z różnych wątków (jeden wątek do wstawienia do jednej tabeli i jest 5 tabel). Istnieje wiele danych więc używam beginTransaction()
->setTransactionSuccessful()
->endTransaction();
w każdym wątku i wszystkich wątków startują jednocześnie, ale w drugim lub czasami trzeciego wątku ja zawsze mam ten wyjątek:Nie można wykonać operacji, ponieważ nie ma bieżącej transakcji podczas wstawiania do bazy danych
używam jedno połączenie SQLite (singleton), jak było mentioned here, ale jednak ten problem pozostaje. Tak, mam nadzieję na jakąś pomoc. Dziękuję z góry!
P.S A jeśli mam warunki wyścigowe, w jaki inny sposób powinienem użyć do wstawiania wielowątkowego?
Dodałem kilka pomysłów do mojej odpowiedzi @AlexanderKaraberov. – Gray
Mieć klasę (tylko DAO), która zmienia rzeczywistą bazę danych. Wtedy twoje wątki po prostu wywołają 'insert()' lub niektóre takie. Metoda byłaby "zsynchronizowana" i zdecydowałaby, czy muszę rozpocząć transakcję, jeśli jeszcze nie została rozpoczęta, lub zakończyć transakcję, jeśli była już uruchomiona. – Gray