SQLite unable to open database file (code 14) auf häufige "SELECT" - Abfrage

Ich habe folgende Klasse "Singleton" zu behandeln SQLite-Verbindung und stellen Sie sicher, dass 1 Instanz-Verbindung für den gesamten Prozess/app:

public class DBController {
  private static DBController instance = new DBController();
  private static DBHelper dbHelper;
  public static DBController getInstance()
  {
    return instance;
  }
  public SQLiteDatabase dbOpen(Context context)
  {
    if(dbHelper == null)
        dbHelper = new DBHelper(context);
    return dbHelper.getWritableDatabase();
  }
}

Und DBHelper-Klasse selbst:

public class DBHelper extends SQLiteOpenHelper {

  public DBHelper(Context context) {
    super(context, "database.db", null, 1);
  }
  @Override
  public void onCreate(SQLiteDatabase db) {
    final String position = "CREATE TABLE test (" +
            "test TEXT NOT NULL);";
    db.execSQL(position);
  }
}

Wenn ich Häufig versuchen "WÄHLEN Sie" ein paar Infos aus der Datenbank erhalte ich folgende Fehlermeldung:

SQLiteLog: (14) cannot open file at line 31278 of [2ef4f3a5b1]
SQLiteLog: (14) os_unix.c:31278: (24) open(/data/user/0/uz.mycompany.myapp/databases/database.db-journal) - 
SQLiteLog: (14) cannot open file at line 31278 of [2ef4f3a5b1]
SQLiteLog: (14) os_unix.c:31278: (24) open(/data/user/0/uz.mycompany.myapp/databases/database.db-journal) - 
SQLiteLog: (14) statement aborts at 29: [SELECT * FROM test WHERE test='testdata1'] unable to open database file
SQLiteQuery: exception: unable to open database file (code 14); query: SELECT * FROM test WHERE test='testdata1'
android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14)

Ich verwende folgenden code zum ausführen der Abfrage:

public String getData(Context context)
{
    SQLiteDatabase _db = dbOpen(context);
    Cursor c = _db.rawQuery("SELECT * FROM test WHERE test='testdata1'", null);
    return getDataFromCursor(c).get(0); //gets data from cursor and returns first one
}

Wie kann ich verwalten/verbessern meine Datenbank-connection zu überwinden/vermeiden Sie dieses problem?

Wo leiten Sie die Datenbank Pfad? Sie können sehen, dass es etwas falsch in diesem Pfad: open(/data/user/0/uz.mycompany.myapp/databases/database.db-journal). Es sollte so etwas wie /data/data/uz.mycompany.myapp/databases/database.db
Danke für die Antwort, ich denke, das problem ist nicht im Zusammenhang mit Datenbank-Pfad... da Meine app funktioniert und alles ist fein, bis es um die Ausführung von getData () - Häufig/Häufig (alle 2 Sekunden)...
unable to open database file sagt Euch das was?
Ich denke, man kann es nicht öffnen-Datenbank-Datei, weil es bereits geöffnet ist, von einer anderen Instanz/thread? korrigieren Sie mich, wenn ich falsch bin
Das ist nicht eine gute Idee. open, use, close.

InformationsquelleAutor JavaMachine | 2016-01-26

Schreibe einen Kommentar