multithreading - 黑莓线程卡在SQLite语句上准备

标签 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();

并且线程卡在prepare语句上。

它通常在大约1分钟后获得结果,但是现在挂起了。

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

任何帮助将不胜感激!

谢谢!

最佳答案

Blackberry中SQLite的问题在于,您无法通过线程共享SQL连接,您必须连接到数据库文件,查询并关闭同一线程中的所有线程。

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

关于multithreading - 黑莓线程卡在SQLite语句上准备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3160407/

相关文章:

database - 如何在 Flutter Floor 中实际查看数据库?

php - 如何从WebSql数据库以及服务器数据库中删除记录

python - 通过 SSH/SFTP 连接获取 Sqlite 数据(使用 Paramiko)

c# - 负载测试服务器登录

java - 在阻塞队列上等待时中断

java - 奇怪的黑莓问题 - 新版本突然请求访问权限

jquery - 为什么这在黑莓上不起作用

java - Http 连接在无线连接上刷新多次,在 EDGE 和 3G 上仅刷新一次

asp.net - HttpModule 线程

android - 在Android中,单击按钮时未出现加载屏幕