データベースのビュースキーマ情報を取得するには、
一般に、SQLViewSchema インスタンスは開発者のコードでは直接作成されません。
データベースの 1 つまたは複数のテーブルの列スキーマ情報を取得するには、
一般に、SQLColumnSchema インスタンスは開発者のコードでは直接作成されません。
結果セットに同じ名前を持つ複数の列が存在する場合、その名前を持つプロパティが 1 つだけが結果オブジェクトに追加されます。そのプロパティに割り当てられる値は、その名前を持つ結果行の最後の列から取得されます。例えば、次のような
SELECT customers.customerId, addresses.customerId FROM customers INNER JOIN addresses ON customers.customerId = addresses.customerId
このステートメントが、短い列名の形式で SQLConnection に対して実行された場合、各結果オブジェクトには
データベースのスキーマ情報を取得するには、
一般に、SQLSchema インスタンスは開発者のコードでは直接作成されません。
例えば、次の SQL ステートメントを使用してデータベースインデックスを作成した場合、そのインデックスのスキーマの
例えば、次の SQL を使用してデータベースインデックスを作成したとします。
このインデックスのスキーマの
これらの値は、データベーステーブルの列で指定できる様々な照合シーケンスを表します。照合シーケンスは、データをソートおよび比較する方法です。例えば、データベースが大文字と小文字を区別するかどうかを指定します。
照合シーケンスの定義と使用について詳しくは、付録「
BINARY 照合が
SQLConnection クラスの機能は、いくつかのカテゴリに分けられます。
ローカル SQL データベースファイルを作成または開くには、
SQLConnection クラスは、SQL ステートメントの状態も示します。これには、複数のステートメントを 1 回のトランザクションで実行するメカニズムを含みます。トランザクションは、
SQLConnection クラスは、接続済みのデータベースのデータベーススキーマ情報を示します。データベースのスキーマは、データベースのテーブル、列、インデックスおよびトリガーの定義を表します。詳細については、
SQLConnection クラスを使用すると、CCM を使用する AES でデータベースを暗号化できます。これにより、データの認証とプライバシーの両方が提供されます。データベースを暗号化するには、データベースを作成するときに、ByteArray を使用して 16 バイトのキーを指定する必要があります。このキーは、後で
SQLConnection インスタンスを使用したデータベースレベルのイベント通知の受信が可能で、キャッシュページサイズ、プロセスのキャンセルおよびステートメントの実行オプションなど、データベースのあらゆる状態を制御することができます。
非同期実行を使用する場合は、イベントリスナーまたは Responder インスタンスを使用して、処理の完了または失敗を特定します。処理はメインアプリケーションスレッドではなくバックグラウンドで実行されるので、データベース処理の実行中でもアプリケーションは実行を続け、ユーザーの操作に応答します。非同期の SQLConnection インスタンスは、それぞれ独自のスレッドで SQL ステートメントを実行します。
非同期実行モードでは、適切なメソッドを呼び出して、特定の処理を開始します。処理の完了(または失敗)は、該当するイベントにリスナーを登録することで検出できます。各処理には、処理が正常に完了した場合に送出される関連イベントが用意されています。例えば、
同期実行を使用する場合は、処理の完了または失敗を特定するためにイベントリスナーを登録する必要はありません。エラーを特定するには、エラーをスローするステートメントを、
関数の名前は任意に付けられます。
クラスレベルメンバー関数はガベージコレクションの対象外であるため、クラスレベルメンバー関数の
イベントリスナーが正常に登録された後に、
リスナーが登録された後に、
ターゲット段階またはバブリング段階のみを対象とするイベントリスナーを登録することはできません。登録時にこれらの段階が組み合わされるのは、バブリングはターゲットノードの祖先にしか適用されないためです。
イベントリスナーが不要になった場合は、
EventDispatcher インスタンスをコピーしても、それに関連付けられているイベントリスナーはコピーされません。新しく作成したノードにイベントリスナーが必要な場合は、ノードを作成した後に、リスナーを関連付ける必要があります。ただし、EventDispatcher インスタンスを移動した場合は、関連付けられているイベントリスナーも一緒に移動されます。
イベントがノードで処理されるときに、イベントリスナーがそのノードに登録中であれば、イベントリスナーは現在の段階ではトリガーされません。ただし、バブリング段階など、イベントフローの後の段階でトリガーすることができます。
イベントがノードで処理されているときにイベントリスナーがノードから削除された場合でも、イベントは現在のアクションによってトリガーされます。削除された後は、その後の処理で再び登録されない限り、イベントリスナーは二度と呼び出されません。
データベースにインデックスが定義されていて、
(
このメソッドが呼び出されると、そのたびに以前に作成された統計データは削除され、データベースや
パラメーターの値が
有効な暗号化キーは 16 バイト長です。メモリ内データベースは暗号化できないので、このパラメーターを
暗号化されたデータベースを追加する場合、指定した暗号化キーがデータベースの暗号化キーと一致していないと、例外が発生します。同期実行モードでは、SQLError 例外がスローされます。非同期モードでは、SQLErrorEvent が送出されて、イベントオブジェクトの
指定された名前を使用して、データベースが既にアタッチされている場合は、
アタッチされているデータベースは、メインデータベースと同じ実行モード(同期または非同期)を使用します。これは、メインデータベースが
デフォルト値(
デフォルトでは、各 SQL ステートメントは自身のトランザクションの範囲内で実行され、ステートメントの実行が正常に完了した場合または失敗した場合にトランザクションが終了します。
トランザクションを終了するには、
トランザクションが現在開いている状態でデータベース接続が閉じられると、AIR はトランザクションを自動的にロールバックします。(注意:AIR 1.1 以前のバージョンの場合、開いているトランザクションは、接続が閉じられると自動的にコミットされます)。
トランザクションでは、ステートメントの実行が単一のデータベースに限定されていません。アタッチされている別のデータベースに対して実行されるステートメントを含めることもできます。
開いているトランザクションがある状態で
トランザクション内でブックマークのように機能する中間セーブポイントを作成するには、
セーブポイントを使用しているトランザクションでは、トランザクション全体をコミットする場合、
この処理はアクティブなトランザクションには含まれていません。
データベース接続が閉じられると、メソッドは
指定された値が有効でない場合は、
ロードされているスキーマにアクセスするには、
非同期実行モードでは、処理が正しく完了すると
データベースが空の場合(データベースにテーブル、ビュー、トリガーまたはインデックスが含まれていない場合)、
このパラメーターは、
有効な暗号化キーは 16 バイト長です。メモリ内データベースは暗号化できないので、このパラメーターを
暗号化されたデータベースを開く場合、指定した暗号化キーがデータベースの暗号化キーと一致していないと、SQLErrorEvent が送出されます。イベントオブジェクトの
データベースが接続されたら、
このパラメーターは、
有効な暗号化キーは 16 バイト長です。メモリ内データベースは暗号化できないので、このパラメーターを
暗号化されたデータベースを開く場合、指定した暗号化キーがデータベースの暗号化キーと一致していないと、SQLError 例外がスローされます。その場合、SQLError オブジェクトの
データベースが接続されたら、
再暗号化操作は、専用のトランザクションで実行します。再暗号化処理を中断した場合、データベースはトランザクションをロールバックし、暗号化キーは変更されません。
変更を永続的にデータベースに保存するには、トランザクション全体がコミットされる必要があります。
コードから
パラメーターなしで(または
セーブポイントが解放またはロールバックされると、該当するセーブポイントとそれ以降に設定されたセーブポイントは削除されます。
パラメーターなしで(または
セーブポイントが解放またはロールバックされると、該当するセーブポイントとそれ以降に設定されたセーブポイントは削除されます。
中間セーブポイントをトランザクション内で設定するには、
前のセーブポイントと同じ名前を指定した場合、
変更を永続的にデータベースに保存するには、トランザクション全体がコミットされる必要があります。
セーブポイント名を指定するには、
セーブポイントが解放またはロールバックされると、該当するセーブポイントとそれ以降に設定されたセーブポイントは削除されます。
SQLColumnNameStyle クラスで定義されている定数は、このプロパティに対して有効な値を表します。
データベースが接続されていない場合、または
単一の SQL
主キーと生成される行識別子の詳細については、付録「
データベースのページサイズは、
データベース接続が閉じられると、この値は 0 にリセットされます。SQLConnection インスタンスがデータベースに接続していない場合、値は 0 になります。
データベースのトリガースキーマ情報を取得するには、
一般に、SQLTriggerSchema インスタンスは開発者のコードでは直接作成されません。
SQLStatement インスタンスは、SQLConnection インスタンスを SQLStatement インスタンスの
ローカル SQL データベースでサポートされている SQL ダイアレクトの詳細な説明については、付録「
非同期実行モードでは、
SQL ステートメントが
ステートメントの結果(
すべてのステートメントは、準備(コンパイル)しなければ実行できません。ステートメントは、SQLStatement インスタンスの
非同期実行モードでは、
このメソッドは、ステートメントが実行中の場合にのみ呼び出せます。ステートメントが
デフォルトでは、
このプロパティに割り当てるクラスは、パラメーターを必要としないコンストラクターを持っていなければなりません。また、このクラスは、
SQL ステートメントのテキストでは、パラメーターは「?」、「:」または「@」のいずれかの文字で示されます。
「:」および「@」トークンは、名前の付いているパラメーターを示し、トークンに続く文字がパラメーターの名前として解釈されます。
例えば、次の SQL ステートメントでは、
SELECT FROM employees WHERE firstName = :firstName
「?」トークンは、インデックス付けされた(番号が付けられた)パラメーターを示します。各パラメーターには、ステートメントのテキストの順序に従って、自動的にインデックスが与えられます。パラメーターのインデックス値は 0 から始まります。つまり、最初のパラメーターのインデックスは 0 になります。
パラメーターは、SQL ステートメントの構築時に不明な値を、型指定して置き換える手段として使用されます。 データベースに渡される値の記憶クラスを保証するには、パラメーターを使用する以外に方法はありません。 パラメーターが使用されていない場合、関連付けられている列の型の類似性に基づいて、すべての値がテキスト表現から記憶クラスに変換されます。記憶クラスと列の類似性について詳しくは、「データタイプサポート」のセクション(付録「
パラメーターは、SQL インジェクションアタックと呼ばれる悪質な手法を防ぐセキュリティ手段としても使用されます。SQL インジェクションアタックでは、ユーザーがアクセス可能な場所(データ入力フィールドなど)に SQL コードを入力します。アプリケーションコードが、ユーザーの入力を SQL テキストと直接連結して SQL ステートメントを構築すると、ユーザーが入力した SQL コードがデータベースに対して実行されてしまいます。次のコードは、ユーザーの入力を SQL テキストに連結する例を示したものです。この手法は使用しないでください。
ユーザーが入力した値をステートメントのテキストに連結するのではなく、ステートメントのパラメーターを使用することで、SQL インジェクションアタックを防ぐことができます。これは、パラメーター値が明示的に置き換え値として扱われ、そのままステートメントのテキストの一部とはならないからです。上記のコードは、次のように書き換えることが推奨されます。
すべてのパラメーター値は、ステートメントを実行する前に設定する必要があります。
テキストは、サポートされている任意の SQL にすることができます。ローカル SQL データベースでサポートされている SQL ダイアレクトの詳細な説明については、付録「
AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、モバイルデバイスまたはテレビ用 AIR デバイスではサポートされません。
AIR は、ユーザーのコンピューターにインストールされた各 AIR アプリケーションに対して、暗号化されたローカルストア(ELS)を提供します。これにより、他のユーザーによって簡単に解読されないように暗号化された形式で、ユーザーのローカルハードディスクに格納されたデータを保存および取得できるようになります。各 AIR アプリケーションで個別の暗号化されたローカルストアが使用され、各 AIR アプリケーションは、コンピューター上の各ユーザーアカウントに対して個別の暗号化されたローカルストアを使用します。
Web サービスに対するログイン資格情報など、セキュリティで保護する必要がある情報を格納するために暗号化されたローカルストアを使用します。他のユーザーに対して非公開にする必要がある情報を保存するには、ELS が適切です。ただし、ELS では同じユーザーアカウントで実行される他のプロセスからデータを保護することはできません。このため、DRM や暗号化キーなどの機密アプリケーションデータを保護するには適切でありません。
AIR では、Windows は DPAPI、Macintosh は KeyChain、Linux は KeyRing または KWallet を使用して、暗号化されたローカルストアを各アプリケーションおよびユーザーに関連付けます。暗号化されたローカルストアでは、128 ビットの AES-CBC 暗号化を使用します。
暗号化されたローカルストアの情報は、application セキュリティサンドボックス内の AIR アプリケーションコンテンツでのみ使用できます。
AIR アプリケーションを更新すると、更新されたバージョンには暗号化されたローカルストアの既存のデータへのアクセス権が保持されます。ただし、次の場合を除きます。
暗号化されたローカルストアの制限事項
暗号化されたローカルストアのデータは、ユーザーのオペレーティングシステムアカウントの資格情報で保護されています。他のエンティティは、そのユーザーとしてログインできる場合を除き、ストア内のデータにアクセスできません。ただし、認証されたユーザーによって実行される他のアプリケーションからのアクセスに対しては、データのセキュリティは保護されません。このため、ライセンスに使用されるキーやデジタル権限管理など、ユーザーに公開したくないアプリケーションのデータがセキュリティ保護されません。ELS は、このような情報を保存するために適切な場所ではありません。ELS は、パスワードなどのユーザーのプライベートデータを保存する目的にのみ適しています。
ELS 内のデータは、さまざまな理由で失われる場合があります。例えば、ユーザーがアプリケーションをアンインストールしたり、暗号化されたデータを削除したりする場合があります。また、更新の結果、発行者 ID が変更される場合があります。こうした理由により、ELS は永続的なデータストレージではなく、プライベートキャッシュとして扱う必要があります。
保存されるデータが 10 MB を超える場合、暗号化されたローカルストアの実行が低速化する場合があります。
AIR アプリケーションをアンインストールする場合、アンインストーラーは暗号化されたローカルストアに保存されたデータを削除しません。
ELS を使用するためのベストプラクティスには次のようなものがあります。
暗号化されたローカルストアのアイテムは、ストリングで識別されます。アイテムは、すべてバイト配列データとして保存されます。
暗号化されたローカルストアのデータは、ユーザーのアプリケーションデータディレクトリのサブディレクトリに置かれます。このサブディレクトリのパスは Adobe/AIR/ELS/ の後ろにアプリケーション ID が続きます。
指定された名前でアイテムが見つからない場合、このメソッドは
データベースのインデックススキーマ情報を取得するには、
一般に、SQLIndexSchema インスタンスは開発者のコードでは直接作成されません。
データベースのテーブルスキーマ情報を取得するには、
一般に、SQLTableSchema インスタンスは開発者のコードでは直接作成されません。
SQL ステートメントの SQLResult インスタンスには、
SQLResult オブジェクトは、
ステートメントが 1 つまたは複数の行を返す場合、このプロパティはすべての行が返されているかどうかを示します。SQLStatement オブジェクトの
実行時は行数が不明なので、ステートメントが完了したと見なされる前は、データベースカーソルが最終行を越えて移動することに注意してください。
ステートメントが 1 つまたは複数の行を返す場合、このプロパティは、結果データの行を示すオブジェクトの配列になります。配列の各オブジェクトにはプロパティ名があり、このプロパティ名は、結果データセットの列名に対応します。
例えば、以下に示す SQL の
例えば、
複雑な結果列(集計関数など)を含む
このステートメントの結果では、
このステートメントの
結果セットに含まれている行数や列数に関わらず、
クエリを実行すると、
結果データで列名が重複している場合、例えば、異なる 2 つのテーブルにそれぞれ
デフォルトでは、
ステートメントがデータを返さない場合、このプロパティは
実行されたステートメントが
行識別子は、データベース内のテーブルの行を一意に識別するために使用されます。この値は、データベースによって頻繁に生成されます。
主キーと生成される行識別子について詳しくは、「CREATE TABLE」および「式」のセクション(どちらも付録「
トリガーによる間接的な変更はカウントされません。トリガーによる変更も含め、変更の合計数を特定するには、
関連する SQL 操作が