sql >> Database >  >> RDS >> SQLite

SQLiteDiskIOException met foutcode 10:schijf I/O-fout

Aangezien u externe opslag gebruikt, moet uw toepassing zich bewust zijn van de externe opslagstatus, die u kunt verkrijgen via Environment.getExternalStorageState() .

U mag alleen toegang krijgen tot externe opslag als de status MOUNTED is .

Als u een bestand probeert te openen (of SQLite DB; het is maar een bestand!) tijdens het opstarten van het apparaat, zult u zeker problemen hebben, omdat externe opslag niet is gekoppeld tot ver in het opstarten van het apparaat (nadat het startscherm is weergegeven).

De uitweg is het registreren van een IntentFilter om op de hoogte te worden gehouden van alle wijzigingen in de externe opslagstatus en dienovereenkomstig te handelen.

Het is altijd een goed idee om de documentatie te lezen! Zie de Android-documentatie voor details:http://developer.android.com/reference/android/os/Environment.html

Het gebruik van externe opslag voor dit doel is twijfelachtig, omdat u niet kunt bepalen wanneer deze niet meer beschikbaar is! De gebruiker sluit bijvoorbeeld zijn apparaat aan op USB op zijn computer en selecteert de optie "USB-massaopslag inschakelen", zodat hij vanaf zijn computer toegang heeft tot de externe opslag van zijn apparaat. Slecht nieuws! Uw app wordt losgekoppeld van externe opslag en hoogstwaarschijnlijk zonder de mogelijkheid om IO op te schonen!

Met deze stand van zaken blijft u nu achter met wat u moet doen met alle gegevens die u in uw database zou plaatsen, als deze maar beschikbaar was.




  1. Hoe REPEAT() werkt in MariaDB

  2. Hoe splits ik een begrensde tekenreeks in SQL Server zonder een functie te maken?

  3. Plannen van schijfruimte voor databases

  4. Een overzicht van de nieuwe DBaaS van MariaDB - SkySQL