Piszę Android menedżera zakupy i nie natknąć się błędu podczas próby zamknięcia jednego z moich tabel bazy danych SQLite.Android SQLite wyjątek: nie można zamknąć z powodu niesfinalizowaną sprawozdania
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();
Nie zdarza się to w przypadku innych połączeń do tej klasy tak, a ja zastanawiałem się, czy to dlatego, że tam jest pętla z wieloma połączeniami tu bazy danych. Błąd to SQLite Exception: unable to close due to unfinalised statements
.
Linia błąd z klasy „ItemsDb” jest tutaj
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();
}
Widocznie SQLite3 ma metodę sfinalizować do niszczenia wcześniejszych połączeń DB, ale nie jestem pewien, jak zaimplementować to czy w ogóle konieczne jest tutaj.
Każda pomoc w tej sprawie byłaby świetna.
Czy używasz kursorów w swoich wyciągach? – Jivings