SQLite
 sql >> Baza danych >  >> RDS >> SQLite

SQLiteDiskIOException z kodem błędu 10:błąd we/wy dysku

Ponieważ korzystasz z pamięci zewnętrznej, Twoja aplikacja musi być świadoma stanu pamięci zewnętrznej, który można uzyskać za pomocą Environment.getExternalStorageState() .

Dostęp do pamięci zewnętrznej można uzyskać tylko wtedy, gdy stan to MOUNTED .

Jeśli próbujesz otworzyć plik (lub SQLite DB; to tylko plik!) podczas uruchamiania urządzenia, zdecydowanie mają problemy, ponieważ pamięć zewnętrzna nie jest zamontowana aż do momentu uruchomienia urządzenia (po wyświetleniu ekranu głównego).

Wyjściem z tego jest zarejestrowanie IntentFilter być powiadamianym o wszystkich zmianach stanu pamięci zewnętrznej i odpowiednio się zachowywać.

Zawsze dobrze jest przeczytać dokumentację! Szczegółowe informacje znajdziesz w dokumentacji Androida:http://developer.android.com/reference/android/os/Environment.html

Używanie pamięci zewnętrznej w tym celu jest wątpliwe, ponieważ nie możesz kontrolować, kiedy staje się ona niedostępna! Na przykład użytkownik podłącza swoje urządzenie do USB na swoim komputerze i wybiera opcję „Włącz pamięć masową USB”, aby móc uzyskać dostęp do pamięci zewnętrznej urządzenia ze swojego komputera. Złe wieści! Twoja aplikacja zostanie odłączona od pamięci zewnętrznej i najprawdopodobniej bez możliwości wykonania jakichkolwiek operacji we/wy czyszczenia!

W takim stanie rzeczy pozostaje Ci teraz co zrobić ze wszystkimi danymi, które umieściłbyś w swojej bazie danych, gdyby tylko były dostępne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę odczytać dane z zaszyfrowanej bazy danych za pomocą SQLiteAssetHelper?

  2. Wyślij aplikację z bazą danych

  3. SQLite LIKE

  4. Nie można otworzyć bazy danych SQLite z programu SQLIte Helper Oncreate, gdy OnCreate jest wyzwalany przez otwarcie bazy danych po raz pierwszy

  5. Czy średnik jest konieczny w SQL?