我创建了一个标签栏,当我第一次进入数据库屏幕时出现,此代码工作正常。但是当我们进入另一个选项卡并再次进入数据库屏幕选项卡时,它会引发异常
net.rim.device.api.database.DatabaseIOException:文件系统错误(12)
我已正确关闭数据库。
答案 0 :(得分:0)
当您尝试打开已打开的数据库时,会发生此错误。
在第一个选项卡中,您已打开数据库连接,但是当您切换另一个选项卡时,则关闭数据库连接的方式。
您应该在重新打开之前关闭数据库连接。
请参阅以下链接了解更多详情
如果您仍无法解决问题,请粘贴数据库代码。
答案 1 :(得分: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:文件系统资源不足