9 Stimmen

Android SQLite Exception: Kann wegen nicht abgeschlossener Anweisungen nicht geschlossen werden

Ich schreibe eine Android-Einkaufsmanager-Anwendung und bin auf einen Fehler gestoßen, als ich versucht habe, eine meiner SQLite-Datenbanktabellen zu schließen.

ItemsDb idb = new ItemsDb(this);

idb.open();

ArrayList<String> itemNames = idb.getItemNames();

for(int i=0; i < itemNames.size(); i++){

    String itemName = itemNames.get(i);

    String itemID = idb.getItemID(itemName);
    String itemName = idb.getItemNames().get(i);
    String itemPrices = idb.getItemPrices().get(i);
    String itemQuantity = idb.getItemQuantities().get(i);               
    String dateBought = idb.getDateBought(itemName);    
    String decayRate = idb.getDecayRate(itemName);
    String decayType = idb.getDecayType(itemName);
    String lastDecay = idb.getLastDecay(itemName);
    String prevQuantity = idb.getPreviousQuantity(itemName);
}

idb.close();

Das passiert bei anderen Aufrufen dieser Klasse nicht, und ich frage mich, ob es daran liegt, dass es hier eine Schleife mit vielen Aufrufen an die Datenbank gibt. Der Fehler ist SQLite Exception: unable to close due to unfinalised statements .

Die Fehlerzeile aus der Klasse "ItemsDb" ist hier

    public ItemsDb(Context c){

        ourContext = c;
    }

    public ItemsDb open() throws SQLException{
        ourHelper = new DbHelper(ourContext);
        ourDatabase = ourHelper.getWritableDatabase();
        return this;
    }

    public void close(){
        ourHelper.close();
    }

Offenbar hat SQLite3 eine finalize-Methode für die Zerstörung der vorherigen DB-Aufrufe, aber ich bin nicht sicher, wie diese zu implementieren oder sogar, wenn es hier notwendig ist.

Jede Hilfe in dieser Sache wäre großartig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X