2012-01-16 9 views
0

私はsqliteデータベースを使用してアプリケーションを動作させることに多くの問題を抱えてきました。リップルですべてうまく動作します(これはクロムのsqlite実装を使用しているためです)。しかし、私がシミュレータ(Curve 9300、OS 6)でアプリケーションを実行すると、問題が始まります。アプリケーションの実行場所、データベースの作成、行の挿入ができたので、実際のクエリは問題ありません。Blackberry WebWorks HTML5データベースの問題

私のアプリケーションには、データベースを扱うためのラッパーを持つjavascriptファイルがあります。このjavascriptファイルは、リスナーとアプリケーションのコアであるページの両方で提供されます。問題は次のとおりです。

  1. アプリケーションをインストールします。リスナーは実行を開始します。
  2. あるシミュレータから別のシミュレータにテキストメッセージを送信します。メッセージは正常に保存されます(私のバナーインジケータの数が増え、その数はクエリを基にしているため確認できます)
  3. テキストを送信し続けると、バナーインジケータが増加します。
  4. アプリケーションを開き、すべてのメッセージを読み取ります。この時点で、javascriptファイルは2回ロードされるので、2つのdbオブジェクトが同じデータベースを指しています。
  5. アプリケーションを閉じます(リスナーはまだ実行中です)
  6. 受信した次のテキストメッセージは、実行時例外を発生させ、詳細は提供されません。

私はスタックトレースを見て、それは例外がSMSリスナーのコールバックで行われたと言います。クエリーが行われる場所は明白です。誰もがなぜdbへの2番目の接続を開くと、例外が発生するか考えていますか?私が理解するところでは、dbはトランザクション中にのみロックされます。新しい行を挿入しようとしたトランザクション以外のトランザクションは実行されていません。私はjavascriptの新機能ですが、javascriptファイルが2つの異なるページに読み込まれるため、変数が共有されていないことは間違いありません。どんなアイデアでも大歓迎です。

+1

コード?スタックトレース? –

答えて

0

まあ、私は解決策を見つけることができませんでした。私は、ブラックベリーのsqliteの実装が2つの同時接続を処理できるとは思わない。その代わりに、リスナーは受信データをファイルに保存します。メインアプリケーションが開くとファイルが読み込まれ、必要なすべてのデータがdbに保存されます。その後、ファイルは削除され、アプリケーションは問題なくクエリを実行します。私はこれが似たような問題を扱う人に役立つことを願っています。