Blackberry поток висит на SQLite оператор подготовки - PullRequest
1 голос
/ 01 июля 2010

Я разрабатываю приложение, которое реализует EditField, в котором вы можете вводить слово, и при наборе приложение отфильтровывает содержимое, отображаемое на экране.

Для этого я начинаю новый поток, когда пользователь печатает. Этот поток извлекает информацию из таблицы SQLite и затем отображает ее в пользовательском интерфейсе.

Я использую SQLite для других целей приложения, и каждое утверждение прекрасно работает.

ПРОБЛЕМА заключается в том, что когда я использую метод Statement.prepare () в потоке фильтрации, он зависает!

Чтобы сделать это проще, предположим, что пользователь только набрал 1 букву в EditField.

Идея кода выглядит примерно так:

Я запускаю тему после того, как пользователь набрал письмо:

            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 запись, поэтому этого не должно быть.

Любая помощь будет принята с благодарностью!

Спасибо!

1 Ответ

4 голосов
/ 24 августа 2010

Проблема с SQLite в Blackberry заключается в том, что вы не можете совместно использовать соединение SQL через потоки, вам необходимо подключиться к файлу БД, выполнить запрос и закрыть все в одном потоке.только если вы используете разные объекты соединения через разные потоки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...