我创建了一个标签栏,当我第一次进入数据库屏幕时会出现这个标签栏,这段代码工作正常。但是当我们进入另一个选项卡并再次进入数据库屏幕选项卡时,它会引发异常
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: File system out of resources