0

データベース画面に初めて入るときに表示されるタブバーを作成しました。このコードは正常に機能しています。しかし、別のタブに移動してから再びデータベース画面のタブに移動すると、例外がスローされます

net.rim.device.api.database.DatabaseIOException: ファイル システム エラー (12)

データベースを適切に閉じました。

4

2 に答える 2

0

データベース コードを開くには

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: File system out of resources が返されます

于 2013-12-11T04:59:05.033 に答える
0

このエラーは、既に開いているデータベースを開こうとすると発生します。

最初のタブでは、データベース接続を開きましたが、別のタブに切り替えると、データベース接続を閉じる方法がわかりました。

再度開く前に、データベース接続を閉じる必要があります。

詳細については、次のリンクを参照してください

http://docs.blackberry.com/en/developers/deliverables/29299/Opening_and_closing_databases_1585333_11.jsp

それでも問題を解決できない場合は、データベース コードを貼り付けてください。

于 2012-04-23T07:23:18.393 に答える