0

我在让我的应用程序使用 sqlite 数据库工作时遇到了很多问题。一切都在涟漪中运行良好(我认为这是因为它只是使用 chrome 的 sqlite 实现)。但是,一旦我在模拟器(Curve 9300,OS 6)上运行我的应用程序,问题就开始了。我已经了解了应用程序可以运行、创建数据库和插入行的位置,因此我知道我的实际查询没问题。

我的应用程序有一个 javascript 文件,其中包含用于处理数据库的包装器。这个 javascript 文件来源于监听器和作为应用程序核心的页面。问题如下:

  1. 安装应用程序。侦听器开始运行。
  2. 从一个模拟器向另一个模拟器发送短信。消息已成功保存(我可以验证这一点,因为我的横幅指示器计数增加,并且该数字基于查询)
  3. 继续发送文本,横幅指示器会增加。
  4. 打开应用程序,并阅读所有消息。此时,javascript文件被加载了两次,所以我有两个db对象指向同一个数据库。
  5. 关闭应用程序(监听器仍在运行)
  6. 收到的下一条短信会导致运行时异常,但未提供更多详细信息。

我查看了堆栈跟踪,它只是说异常发生在 sms 侦听器的回调中。这很明显,因为这就是查询发生的地方。有谁知道为什么打开与数据库的第二个连接会导致异常?据我了解,数据库仅在事务期间被锁定。除了尝试插入新行的事务之外,肯定没有任何事务正在运行。虽然我是 javascript 新手,但我很确定没有变量被共享,因为 javascript 文件加载到两个不同的页面中。任何想法将不胜感激。

4

1 回答 1

0

好吧,我找不到解决方案。我不认为黑莓 sqlite 实现可以处理两个并发连接。相反,我的侦听器现在将传入的数据保存到文件中。当主应用程序打开时读取文件,然后将所有必要的数据保存到数据库中。之后,该文件被删除,应用程序执行查询没有问题。我希望这可以帮助任何处理类似问题的人。

于 2012-01-17T20:31:57.293 回答