Ich benutze Android SQLiteOpenHelper meine sqlite-Datenbank zu behandeln.Multi-Threaded mehrere SQLite-Befehle android Fehler
Ich versuche, eine riesige Menge an Datenbankbefehlen im Hintergrund mit einer einfachen asynctask zu tun, so dass der Benutzer die Verzögerung nicht bemerkt, die es auf dem Hauptthread geben würde. Wenn es mehrere (eine große Menge) Befehle gibt, bekomme ich immer den Datenbankkant Open Fehler.
android.database.sqlite.SQLiteCantOpenDatabaseException: unable to open database file (code 14) os_unix.c:31278: (24) open(/data/user/0/com.locomain.app/databases/app.db-journal)
Dies passiert nicht, wenn ich den Befehl eine kleine Anzahl von Zeiten aufrufen.
Ich habe bereits die anderen Threads zu diesem Thema überprüft und auch einige Google-Suchanfragen gemacht, aber ich konnte die Anwsser nicht finden.
mein Code:
public void addTag(Tag tag){
final SQLiteDatabase db = getWritableDatabase();
final ContentValues values = new ContentValues(1);
db.beginTransaction();
values.put(TagColumn.TAG_NAME,tag.getName());
db.insert(TagColumn.TABLE_NAME,null,values);
db.setTransactionSuccessful();
db.endTransaction();
}
Etwas anderes hat bereits die Datei geöffnet. Haben Sie 2 Instanzen der Hilfsklasse? Es wird allgemein als am besten angesehen, diese Klasse zu einem Singleton zu machen, um dieses Problem zu vermeiden. –
nein, es ist ein Singleton – locomain