基于sqlite数据库中的数据在Blackberry UIapplication上推送屏幕时出现问题

时间:2011-04-21 07:57:51

标签: blackberry sqlite blackberry-jde uiapplication

我正在尝试推送屏幕可能主要是UiApplication(MyApp)基于是否创建了数据库,如果它创建的比它是emapty还是它有一些数据.. 但是当我运行这个代码时,我的balckberry应用程序jsts挂起..

感谢任何帮助:)

我已经检查过虚拟SD卡是否在模拟器中,我甚至有代码在运行时检查SDCard是否可用。

  • 使用Eclipse Helios的JDE版本6.0

  • 插入BlackBerry Simulator:9800

  • Os:Windows 7 32位终极版

下面是我在我的应用中使用的代码

public MyApp()
    {   

        try {
                MyAppURI  = URI.create("file:///SDCard/BlackBerry/Database/"
                        + "MyApp.db");
                this.setMyURI(MyAppURI);

                boolean flag = false;
                flag = DatabaseFactory.exists(getMyURI());
                if ( flag == false){
                    db = DatabaseFactory.create(getMyURI());
                    db.close();
                    new DatabaseSchema(); // this will simpaly create setting table in databse MyApp.db i am closing the database there
                    pushScreen(new Settings());
                }else{
                    db = DatabaseFactory.open(getMyURI());
                    Statement st = db.createStatement("select count(*) from Setting");
                    Cursor cursor = st.getCursor();
                    if (cursor.isEmpty() == true){
                        pushScreen(new Settings());
                    }else{
                        pushScreen(new Reports());
                    }               
                }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

1 个答案:

答案 0 :(得分:2)

理想情况下,您应该在自己的Thread中运行这些数据库操作,因为它们是阻塞操作。我发现有用的一件事是,如果他们没有正确显示,我将pushScreen()放在invokeLater()调用中,当我从构造函数中推出它们时。这允许系统在显示Screen之前完成需要完成的任何事情,然后它就可以推送。