Android SQLite Exception: nicht in der Lage, aufgrund von nicht finalisierten Anweisungen zu schließen

Ich schreibe eine Android-Shopping-Manager-Anwendung und habe einen Fehler gefunden, wenn ich versuche, 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(); 

Dies geschieht nicht mit anderen Anrufen dieser Klasse so und ich frage mich, ob es ist, weil es eine Schleife mit vielen Anrufen in die Datenbank hier ist. Der Fehler ist SQLite Exception: unable to close due to unfinalised statements .

  • Croping Bild in Android mit Opencv
  • Wie kann ich Farbwerte (#rgb) aus einem Android-Design extrahieren?
  • Android java.lang.IllegalStateException: Die Methode der Aktivität konnte nicht ausgeführt werden
  • Wie kann man eine Zwei-Wege-Datenbindung mit einem ToggleButton durchführen?
  • TabLayout entfernen unnötiges Scrollen
  • Bekomme Kontext in Nicht-Aktivitätsklasse
  • 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(); } 

    Anscheinend hat SQLite3 eine endgültige Methode zum Zerstören früherer DB-Anrufe, aber ich bin mir nicht sicher, wie man dies implementiert oder auch wenn es hier notwendig ist.

    Jede mögliche Hilfe auf diesem würde groß sein

  • Assistent Geofire-Standort mit Firebase-Eintrag verknüpfen
  • Dex kann nicht ausgeführt werden: Mehrere Dex-Dateien definieren Landroid / support / v7 / appcompat
  • Wie kann man die Höhe und die Breite der zusammengesetzten Texte in xml einstellen?
  • Volley - Serienanforderungen statt parallel?
  • Datei aus Assets lesen
  • Korrigieren Sie alle Kontrollkästchen in ListView?
  • One Solution collect form web for “Android SQLite Exception: nicht in der Lage, aufgrund von nicht finalisierten Anweisungen zu schließen”

    Es scheint, das Problem war Cursor verwandt, danke Jivings. Ich habe den Cursor nicht geschlossen, nachdem ich die Datenbank abgefragt habe, was bedeutet, dass bestimmte Verweise auf die Datenbank ungültig waren.

     public String getName(String id) throws SQLException{ String[] columns = new String[]{ KEY_ItemID, KEY_NAME}; Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ItemID + "='" + id + "'", null, null, null, null); if(c != null){ c.moveToFirst(); String name = c.getString(1); c.close(); return name; } return null; } 

    Das Aufrufen von "c.close" schien den Trick zu machen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.