sql >> Databáze >  >> RDS >> SQLite

Nelze otevřít databázi v režimu čtení/zápisu

Vaše otázka není tak jasná, ale pokusím se odpovědět.

S největší pravděpodobností vaše databáze:

  1. Zatím neexistuje a musíte jej vytvořit;
  2. Váš databázový soubor je pouze pro čtení, musíte jej změnit (Tato otázka může souviset).

Pro #2 místo použití SQLiteOpenHelper#getReadableDatabase() , použijte SQLiteOpenHelper#getWritableDatabase

Pokud je vaše databáze na externí úložné jednotce, musíte zkontrolovat několik dalších věcí:

  1. Je externí úložiště aktuálně připojeno? Pokud ne, nebudete mít přístup k db.
  2. Je připojen pouze pro čtení? Pokud ano, budete to muset změnit.
  3. Zkontrolovali jste cestu? Je to správné?

Problém může být v kterémkoli z těchto témat.

Chcete-li zkontrolovat, zda je připojen pouze pro čtení, zkuste následující:

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

Převzato odtud.

Další informace o Environment třídy, nahlédněte do dokumentace.



  1. Chci použít příkaz CASE k aktualizaci některých záznamů na serveru SQL 2005

  2. Změňte formát data (v DB nebo na výstupu) na dd/mm/rrrr - PHP MySQL

  3. Název sloupce SQL stejný jako název proměnné PL/SQL - Jak to lze provést v příkazu select?

  4. Výkon UUID v MySQL?