1
我正在开发实现,可以在其中输入一个词,而键入应用程序将过滤正在屏幕上显示内容的EditField中的应用程序。黑莓线挂在SQLite的声明准备
为此,我在用户键入时开始一个新线程。该线程从SQLite表中提取信息,然后在UI上显示。
我在应用程序中使用SQLite来处理其他事情,并且每条语句都很好。
的问题是,当我使用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感谢,正是答案我需要 – 2011-02-22 00:23:56
所以,你应该从一个单独的线程中执行数据库的任何操作。那么线程安全在哪里?我可以从另一个线程的另一个数据库? – 2011-09-12 01:59:05
嗨安德烈。这是正确的,根据我的理解,他们使用术语“线程安全”来指定只要每个连接到不同的DB文件,就可以在不同线程中拥有尽可能多的SQLite连接。我相信术语“线程安全”在Blackberry文档中没有被正确使用。从线程安全的我明白,我可以在不同的线程中使用相同的连接实例,但这不是这种情况。 – Arturo 2011-09-22 14:59:24