sql >> Database >  >> RDS >> SQLite

Kan database niet openen in lees-/schrijfmodus

Je vraag is niet zo duidelijk, maar ik zal proberen te antwoorden.

Hoogstwaarschijnlijk is uw database ofwel:

  1. Bestaat nog niet, en je moet het maken;
  2. Uw databasebestand is alleen-lezen, u moet het wijzigen (deze vraag kan gerelateerd zijn).

Voor #2, in plaats van SQLiteOpenHelper#getReadableDatabase() te gebruiken , gebruik SQLiteOpenHelper#getWritableDatabase

Als uw database op een externe opslageenheid staat, moet u nog een paar andere dingen controleren:

  1. Is de externe opslag momenteel gekoppeld? Zo niet, dan heb je geen toegang tot de database.
  2. Is het gemount als alleen-lezen? Als dit het geval is, moet u dit wijzigen.
  3. Heb je het pad gecontroleerd? Klopt het?

Het probleem kan bij een van deze onderwerpen liggen.

Probeer het volgende om te controleren of het als alleen-lezen is aangekoppeld:

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

Vanaf hier genomen.

Voor meer informatie over de Environment class, raadpleeg de documenten.



  1. Datum selecteren zonder tijd in SQL

  2. Gratis ES voor 11.2.0.4 en 12.2 Releasedatum

  3. Wijzig het datumformaat voor de huidige sessie in SQL Server

  4. Hoe maak je een gepartitioneerde PostgreSQL-reeks?