黑莓线程挂在SQLite声明准备

时间:2010-07-01 17:59:52

标签: multithreading sqlite blackberry

我正在开发一个实现EditField的应用程序,您可以在其中键入单词,在键入应用程序时将过滤屏幕上显示的内容。

为此,我在用户输入时启动一个新线程。该线程从SQLite表中提取信息,然后在UI上显示它。

我将SQLite用于应用程序中的其他内容,并且每个语句都很有效。

问题是,当我在Filtering线程中使用Statement.prepare()方法时,它会挂起!

为了简化这一点,我们假设用户只在EditField中键入了1个字母。

代码的想法是这样的:

我在用户输入一个字母后启动该帖子:

            mThread = new Thread(){                 
                  public void run(){filtrarListaRecolecciones();}                     
            };
            mThread.setPriority(Thread.MAX_PRIORITY);
            mThread.start();

在filtrarListaRecolecciones,我跑:

mStatement = mBD.createStatement("SELECT COUNT(*) FROM Recolecciones WHERE Nombre LIKE '%a%' AND Status=3");
mStatement.prepare();

线程挂在准备声明中。

它曾经在大约1分钟后得到结果,但现在它只是挂起。

该表只有1条记录,因此不应该是这样。

非常感谢任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:4)

Blackberry中SQLite的问题在于你不能通过线程共享SQL连接,你必须连接到DB文件,查询并关闭同一个线程中的所有内容。

SQLite是线程安全的,但前提是您通过不同的线程使用不同的连接对象。