我創建了一個標籤欄,當我第一次進入數據庫屏幕時出現這個代碼工作正常。但是,當我們去另一個選項卡上和數據庫屏幕選項卡上再去它拋出一個異常net.rim.device.api.database.DatabaseIOException:文件系統錯誤(12)
net.rim.device.api.database.DatabaseIOException:文件系統錯誤(12)
我已經正確關閉數據庫。
我創建了一個標籤欄,當我第一次進入數據庫屏幕時出現這個代碼工作正常。但是,當我們去另一個選項卡上和數據庫屏幕選項卡上再去它拋出一個異常net.rim.device.api.database.DatabaseIOException:文件系統錯誤(12)
net.rim.device.api.database.DatabaseIOException:文件系統錯誤(12)
我已經正確關閉數據庫。
當您嘗試打開已打開的數據庫時會發生此錯誤。
在第一個選項卡中,您已經打開了數據庫連接,但是當您切換另一個選項卡時,則關閉了數據庫連接。
您應該在重新打開之前關閉數據庫連接。
看到下面的鏈接查看更多細節
如果仍無法解決問題,請粘貼您的數據庫代碼。
要打開數據庫代碼
public void openDb(){
try{
closeDb();
// Open the database
URI uri = URI.create("Go2Reward.sqlite");
Logger.debug("-----URI-----"+uri);
_db = DatabaseFactory.open(uri);
}catch(Exception e){
Logger.error("--------- in open db====="+e.getMessage()+"----"+e);
}
}
//關閉數據庫
public void closeDb(){
try{
if(_db != null)
{
Logger.debug("----close db---");
_db.close();
_db = null;
}
}catch(Exception e){
Logger.error(" ---------in close db" , e);
}
}
代碼從數據庫中獲取的數據是遵循
public Vector getCategoryVector() {
Vector categoryVec = new Vector();
try{
openDb();
Statement statement = _db.createStatement("SELECT category FROM CategoriesTable");
statement.prepare();
Cursor cursor = statement.getCursor();
Row row;
while(cursor.next()) {
row = cursor.getRow();
categoryVec.addElement(row.getString(0));
}
cursor.close();
statement.close();
}catch (Exception e) {
Logger.error("---error getCategoryVector---"+e.getMessage());
}finally{
closeDb();
}
return categoryVec;
}
但是當我打開數據庫它的工作很好,但在10個事務內,它會返回異常net.rim.device.api.database.DatabaseIOException:Fi le系統資源不足
這段代碼在黑莓模擬器中工作正常,但在真實設備上,它給出了異常net.rim.device.api.database.DatabaseIOException:文件系統資源不足 – user2656062 2013-12-11 09:21:48
當我在另一個選項卡中時,我在finally塊中關閉數據庫。 – user1350661 2012-04-23 07:32:46
請參閱我的代碼 – user1350661 2012-04-23 07:41:11
我在哪裏看到您的代碼? – 2012-04-23 08:32:59