Проблемы с базами данных BlackBerry WebWorks HTML5 - PullRequest
0 голосов
/ 16 января 2012

У меня было много проблем, чтобы заставить мое приложение работать с использованием базы данных sqlite.В Ripple все прекрасно работает (я полагаю, это потому, что он использует реализацию sqlite в Chrome).Однако после запуска приложения на симуляторе (Curve 9300, OS 6) начинаются проблемы.Я понял, где приложение может запускаться, создавать базу данных и вставлять строки, поэтому я знаю, что с моими фактическими запросами все в порядке.

У моего приложения есть файл javascript, который содержит оболочки для работы с базой данных.Этот файл javascript поставляется как слушателем, так и страницей, которая является ядром приложения.Проблема заключается в следующем:

  1. Установите приложение.Слушатель начинает работать.
  2. Отправка текстового сообщения из одного симулятора в другой.Сообщение успешно сохранено (я могу убедиться в этом, потому что количество индикаторов моего баннера увеличивается, а число основано на запросе)
  3. Продолжайте отправлять тексты, и индикатор баннера будет увеличиваться.
  4. Откройте приложение и прочитайте все сообщения.На этом этапе файл javascript загружается дважды, поэтому у меня есть два объекта db, указывающих на одну и ту же базу данных.
  5. Закройте приложение (слушатель все еще работает)
  6. При получении следующего текстового сообщенияИсключение времени выполнения, без дополнительной информации.

Я посмотрел на трассировку стека, и она просто говорит, что исключение имело место при обратном вызове слушателя смс.Это очевидно, поскольку именно здесь происходят запросы.У кого-нибудь есть идеи, почему открытие второго соединения с БД вызывает исключение?Насколько я понимаю, БД блокируется только во время транзакции.Определенно не выполняется никаких транзакций, кроме той, которая пытается вставить новую строку.Хотя я новичок в javascript, я совершенно уверен, что никакие переменные не передаются, поскольку файл javascript загружается на двух разных страницах.Любые идеи будут с благодарностью.

1 Ответ

0 голосов
/ 18 января 2012

Ну, я не мог найти решение. Я не думаю, что реализация BlackBerry sqlite может обрабатывать два одновременных соединения. Вместо этого мой слушатель теперь сохраняет входящие данные в файл. Файл читается при открытии основного приложения, а затем все необходимые данные сохраняются в БД. После этого файл удаляется, и приложение выполняет запросы без проблем. Я надеюсь, что это поможет любому, имеющему дело с подобной проблемой.

...