ローカル SQL データベースを操作するためのコードを記述する際には、非同期実行モードまたは同期実行モードのどちらの実行モードでデータベース操作を実行するかを指定します。コード例では通常、各操作の実行方法が両方の方法で示されているため、ニーズに合う方の例を使用できます。
非同期実行モードでは、ランタイムに命令を与えると、要求した操作が完了または失敗したときにイベントが送出されます。まず、データベースエンジンに操作を実行するように命令します。データベースエンジンの処理はバックグラウンドで行われ、アプリケーションは引き続き実行されます。操作が完了(または失敗)すると、データベースエンジンがイベントを送出します。そのイベントによってコードがトリガーされて、それに続く操作が実行されます。このアプローチには、データベース操作がバックグラウンドで実行されている間もメインのアプリケーションコードの実行が継続されるという大きな利点があります。データベースの操作に時間がかかったとしても、アプリケーションは引き続き実行されるため、最も重要な点として、画面が動かなくなったりしてユーザーの操作が妨げられることがありません。その一方で、非同期操作のコードは他のコードに比べて記述が難しくなることがあります。一般的には、依存する複数の操作を様々なイベントリスナーメソッドに分割しなければならない場合に記述が難しくなります。
概念的には、操作をステップの 1 つのシーケンス(一連の同期操作)として記述する方が、複数のイベントリスナーメソッドに分割された一連の操作として記述するより簡単です。Adobe AIR では、データベース操作を非同期に実行するほかに、同期的に実行することもできます。同期実行モードでは、操作はバックグラウンドではなく、他のすべてのアプリケーションコードと同じ実行シーケンスで実行されます。データベースエンジンに操作を実行するように命令すると、その時点でコードが一時停止して、その間にデータベースエンジンの処理が行われます。操作が完了すると、コードの次の行から実行が再開されます。
操作を非同期に実行するか同期的に実行するかは、SQLConnection のレベルで設定します。1 つのデータベース接続を使用して、操作やステートメントの一部を同期的に実行し、その他を非同期に実行することはできません。SQLConnection で同期実行モードと非同期実行モードのどちらを使用するかは、データベースを開くための SQLConnection メソッドを呼び出すことによって指定します。
SQLConnection.open()
を呼び出すとその接続で同期実行モードが使用され、
SQLConnection.openAsync()
を呼び出すと非同期実行モードが使用されます。
open()
または
openAsync()
を使用して SQLConnection インスタンスをデータベースに接続すると、実行モードが同期または非同期のいずれかに固定されます。実行モードを変更するには、データベースへの接続をいったん閉じてもう一度開く必要があります。
各実行モードにはそれぞれ利点があります。ほとんどの面は似ていますが、各モードを使用するときに頭に入れておく必要がある違いがいくつかあります。これらのトピックの詳細と、各モードを使用する際のヒントについては、
同期および非同期のデータベース操作の使用
を参照してください。