Ich bekomme java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase
beim Einfügen in TABLE_STOCKUNIT
. Wenn Sie in einfügen, gibt es kein solches Problem. Erzählen Sie mir bitte, warum das Problem auftritt, weil db.close()
nach der db.insert()
aufgerufen wird?java.lang.IllegalStateException beim Einfügen in die Datenbank
public long addProduct(ProductDescription product, int quantity) {
long rows;
SQLiteDatabase db=null;
try {
db = this.getWritableDatabase();
ContentValues value = new ContentValues();
value.put("producttype_id", 0);
value.put("barCode", product.getId());
value.put("name", product.getName());
value.put("value", product.getPrice());
value.put("measure_id", 0);
value.put("precision", 0);
rows = db.insert(TABLE_PRODUCT, null, value);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
try {
ContentValues value = new ContentValues();
value.put("stock_id", 0);
value.put("product_id", getProductByBarCode(product.getId()).getKey());
value.put("qty", quantity);
long row = db.insert(TABLE_STOCKUNIT, null, value); //java.lang.IllegalStateException
db.close();
} catch (Exception e) {
e.printStackTrace();
return -2;
}
return rows; // return rows inserted.
}
Sie definiert haben, nicht das, was 'db' in der zweiten ist' –
ich irgendwo anders auf die Datenbank zu schließen erraten try' zu blockieren, bevor die zweite erfolgt. Versuchen Sie, 'db.isOpen()' zum Debuggen hinzuzufügen. –
@ R2R nicht sehen, wie dieser ein dupe ist, da es ein offensichtlicher Tippfehler ist –