2012-01-16 1 views
0

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

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

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

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

+1

код? трассировки стека? –

ответ

0

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