-1
TABLE_STOCKUNIT
に挿入するとjava.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteDatabase
が得られます。 TABLE_PRODUCT
に挿入すると、そのような問題はありません。db.insert()
の後にdb.close()
が呼び出されるため、問題が発生する理由を教えてください。java.lang.IllegalStateExceptionデータベースに挿入するとき
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.
}
あなたは、私が二番目が行われる前に、データベースを閉じてどこかに推測何 'db'が第二' try'ブロック –
にある定義されていません。デバッグに 'db.isOpen()'を追加してみてください。 –
@ R2Rこれは明白なタイプミスであるので、これがどのように欺瞞であるかわかりません –