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

SQLite ha restituito un codice di errore di 14

Potrebbe essere un po' tardi, ma spero che questo aiuti a chiunque abbia questo problema (dal momento che non riesco a trovare una soluzione definitiva in giro).

Penso di conoscere il motivo di questa causa (almeno nel mio caso). Guardando nel DDMS --> Esplora file , ti renderesti conto che la Cartella del database (/data/data//databases/) non esiste, motivo per cui l'applicazione non può creare il file di database in quella cartella inesistente. Se riesci a creare una cartella di database in qualche modo, puoi evitare questo problema.

Poiché sono pigro, ho appena usato la cartella /data/data//files/ quando sono in modalità emulatore. Puoi ottenere la directory dei file usando questo:

context.getFilesDir().getPath()

Questo ha funzionato magnificamente per me nell'emulatore.

Spero che questo aiuti qualcuno.

Se vuoi vedere del codice:

String dbFilename = "example.db";
try
{       
    File databaseFile = getDatabasePath(dbFilename);        
        SQLiteDatabase _db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
} catch (Exception e)
{
    String databasePath =  getFilesDir().getPath() +  "/" + dbFilename;
    File databaseFile = new File(databasePath); 
    _db = SQLiteDatabase.openOrCreateDatabase(databaseFile);
}

EDIT:ho provato ad accedere a Facebook (la mia app ha l'integrazione con FB) sull'emulatore e la cartella / database è apparsa dopo (e persisteva). Non sono sicuro di cosa sia successo, ma è possibile creare quella cartella in qualche modo. Qualcosa su cui un altro esperto qui intorno può far luce.