java - 使用数据库时出现"DatabaseIOException: File system error (12)"?

标签 java blackberry

我创建了一个选项卡栏,当我第一次进入数据库屏幕时会出现该选项卡栏,此代码工作正常。但是当我们进入另一个选项卡并再次进入数据库屏幕选项卡时,它会引发异常

net.rim.device.api.database.DatabaseIOException:文件系统错误 (12)

我已正确关闭数据库。

我在finally block 中关闭了数据库。每次移动选项卡时数据库都会关闭

这是我的代码:

    Database d = null;
    URI _uri = null;
    Statement st = null;
    Cursor c = null;

    try
    {

         _uri=URI.create("file:///SDCard/MyBudgetTracker.db");
            if (DatabaseFactory.exists(_uri)) {
                d=DatabaseFactory.openOrCreate(_uri,new DatabaseSecurityOptions(false));
                 st = d.createStatement("SELECT * FROM "+Globalvalue.planCategoryTable);
                st.prepare();
                 c = st.getCursor();
                Row r;
                int i = 0;

                while(c.next()) {
                    r = c.getRow();
                    r.getString(0);
                    i++;
                }
                if (i==0)
                {
                    add(new RichTextField("No data in the User table."));
                }

        }


    }catch (Exception e) 
    {
        System.out.println(e.getMessage());
        System.out.println(e);
        e.printStackTrace();// TODO: handle exception
    } finally {
        try {
            if (DatabaseFactory.exists(_uri)) {
                if (c != null) {
                    c.close();
                }if (st != null) {
                    st.close();
                } if (d != null) {
                    d.close();
                }
            }
        } catch (Exception e2) {
            // TODO: handle exception
        }
    }

最佳答案

您正在从数据库中检索值到您选择的选项卡上吗? 您可以考虑这种打开和关闭数据库的替代方法。它总是产生较少的错误。

try
{    
    //Open or create the database
    Database db = DatabaseFactory.openOrCreate("MyBudgetTracker.db");    
    //Retrieve Data from db
    Statement statement1 = db.createStatement("SELECT * FROM "+Globalvalue.planCategoryTable);
    statement1.prepare();
    statement1.execute();       
    statement1.close(); 
    db.close();
}
catch(DatabaseException dbe)
{
    System.err.println(dbe.toString());
}

否则,您可以在获取值之前在每个选项卡上包含一个 db open 语句,尽管这会增加您的编程代码行数。

关于java - 使用数据库时出现"DatabaseIOException: File system error (12)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10293070/

相关文章:

java - 编译器说 Java 代码无效

user-interface - 黑莓 - 从带有复选框的列表中获取选中的项目

eclipse - 黑莓外部库问题(找不到模块)

blackberry - BBM与App集成

css - blackberry 是否为 iPhones UIKit 等自定义 Web 应用程序提供 css 库?

java - Android Opencv 中的模板匹配

java - 关闭socket并释放资源

java - 菜单项显示不正确

java - setter、getter方法的反射

java - CheckboxField 在 Blackberry java 应用程序中给出 StackOverflow 错误