SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Não é possível abrir o banco de dados no modo de leitura/gravação


Sua pergunta não é tão clara, mas vou tentar responder.

Muito provavelmente, seu banco de dados:
  1. Ainda não existe e você precisa criá-lo;
  2. Seu arquivo de banco de dados é somente leitura, você precisa alterá-lo (esta pergunta pode estar relacionada).

Para #2, em vez de usar SQLiteOpenHelper#getReadableDatabase() , use SQLiteOpenHelper#getWritableDatabase

Se o seu banco de dados estiver em uma unidade de armazenamento externa, você tem algumas outras coisas para verificar:
  1. O armazenamento externo está montado no momento? Caso contrário, você não poderá acessar o banco de dados.
  2. Ele está montado como somente leitura? Nesse caso, você terá que alterar isso.
  3. Você verificou o caminho? Está correto?

O problema pode estar em qualquer um desses tópicos.

Para verificar se está montado como somente leitura, tente o seguinte:
/* 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;
}

Tirado daqui.

Para obter mais informações sobre o Environment classe, consulte os documentos.