sql >> Database teknologi >  >> RDS >> SQLite

Kan ikke åbne databasen i læse-/skrivetilstand

Dit spørgsmål er ikke så klart, men jeg vil prøve at svare.

Mest sandsynligt er din database enten:

  1. Eksisterer ikke endnu, og du skal oprette den;
  2. Din databasefil er skrivebeskyttet, du skal ændre den (dette spørgsmål kan være relateret).

For #2, i stedet for at bruge SQLiteOpenHelper#getReadableDatabase() , brug SQLiteOpenHelper#getWritableDatabase

Hvis din database er på en ekstern lagerenhed, har du et par andre ting at kontrollere:

  1. Er det eksterne lager monteret i øjeblikket? Hvis ikke, kan du ikke få adgang til db.
  2. Er den monteret som skrivebeskyttet? Hvis det er tilfældet, bliver du nødt til at ændre dette.
  3. Har du tjekket stien? Er det korrekt?

Problemet kan være ethvert af disse emner.

Prøv følgende for at kontrollere, om den er monteret som skrivebeskyttet:

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

Taget herfra.

For mere information om Environment klasse, se venligst dokumenterne.



  1. Får en mærkelig fejl, SQL Server-forespørgsel ved hjælp af `WITH`-klausul

  2. Sådan gemmer man signatur i MySQL

  3. Brug af pg_dump til kun at få indsæt sætninger fra én tabel i databasen

  4. PHP &MySQL sideinddeling