SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Datenbank kann nicht im Lese-/Schreibmodus geöffnet werden

Deine Frage ist nicht so klar, aber ich versuche sie zu beantworten.

Höchstwahrscheinlich entweder Ihre Datenbank:

  1. Existiert noch nicht, und Sie müssen es erstellen;
  2. Ihre Datenbankdatei ist schreibgeschützt, Sie müssen sie ändern (Diese Frage könnte damit zusammenhängen).

Für #2, anstatt SQLiteOpenHelper#getReadableDatabase() zu verwenden verwenden Sie SQLiteOpenHelper#getWritableDatabase

Wenn sich Ihre Datenbank auf einer externen Speichereinheit befindet, müssen Sie noch einige andere Dinge überprüfen:

  1. Ist der externe Speicher derzeit gemountet? Wenn nicht, können Sie nicht auf die Datenbank zugreifen.
  2. Ist es als schreibgeschützt gemountet? Wenn ja, müssen Sie dies ändern.
  3. Haben Sie den Pfad überprüft? Ist es richtig?

Das Problem könnte bei einem dieser Themen liegen.

Um zu überprüfen, ob es als schreibgeschützt gemountet ist, versuchen Sie Folgendes:

/* 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;
}

Von hier genommen.

Weitere Informationen zur Environment Klasse finden Sie in der Dokumentation.