sql >> Databasteknik >  >> RDS >> SQLite

Kan inte öppna databasen i läs/skrivläge

Din fråga är inte så tydlig, men jag ska försöka svara.

Troligtvis din databas antingen:

  1. Finns inte än, och du måste skapa den;
  2. Din databasfil är skrivskyddad, du måste ändra den (den här frågan kan vara relaterad).

För #2, istället för att använda SQLiteOpenHelper#getReadableDatabase() , använd SQLiteOpenHelper#getWritableDatabase

Om din databas finns på en extern lagringsenhet har du några andra saker att kontrollera:

  1. Är den externa lagringen för närvarande monterad? Om inte kan du inte komma åt db.
  2. Är den monterad som skrivskyddad? Om så är fallet måste du ändra detta.
  3. Har du kontrollerat sökvägen? Stämmer det?

Problemet kan bero på något av dessa ämnen.

För att kontrollera om den är monterad som skrivskyddad, prova följande:

/* 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 härifrån.

För mer information om Environment klass, se dokumenten.



  1. Det renaste sättet att bygga en SQL-sträng i Java

  2. RowGen v3 automatiserar generering av databastestdata

  3. Visa innehållet i databasfilen i Android Studio

  4. Hur man installerar och konfigurerar phpMyAdmin på Debian 8