flash.dataSQLViewSchema SQLViewSchema インスタンスは、データベースの特定のビューを示す情報を提供します。flash.data:SQLTableSchema SQLViewSchema インスタンスは、データベースの特定のビューを示す情報を提供します。このインスタンスには、ビューの名前(name プロパティ)、ビューの作成に使用された SQL ステートメント(sql プロパティ)およびビューの列に関する情報(columns プロパティ)が含まれます。

データベースのビュースキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを使用してスキーマ情報をロードします。このとき、null または SQLViewSchematype 引数の値に使用します。結果として得られた SQLSchemaResult インスタンスの views プロパティには、データベース内のビューを表す SQLViewSchema インスタンスの配列が含まれます。

一般に、SQLViewSchema インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLViewSchema SQLViewSchema インスタンスを作成します。databaseString関連付けられたデータベースの名前です。 nameStringビューの名前です。 sqlStringビューの作成に使用された SQL ステートメントです。 columnsArrayこのビューの列を示す SQLColumnSchema インスタンスの配列です。 SQLViewSchema インスタンスを作成します。一般に、SQLViewSchema コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。
SQLColumnSchema SQLColumnSchema クラスは、データベースのテーブル内の特定の列の特性を示す情報を提供します。Object SQLColumnSchema クラスは、データベースのテーブル内の特定の列の特性を示す情報を提供します。

データベースの 1 つまたは複数のテーブルの列スキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを使用してスキーマ情報をロードします。このとき、trueincludeColumnSchema 引数の値として使用します。結果として得られた SQLSchemaResult インスタンスでは、各テーブルとビューの定義に columns プロパティが含まれます。このプロパティは、テーブルまたはビューの列を示す SQLColumnSchema インスタンスの配列です。

一般に、SQLColumnSchema インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchemaflash.data.SQLViewSchemaSQLColumnSchema SQLColumnSchema インスタンスを構築します。nameString列の名前です。 primaryKeyBooleanこの列が、関連付けられたテーブルの主キーの一部かどうかを示します。 allowNullBooleanこの列に NULL 値を含めることができるかどうかを示します。 autoIncrementBooleanこの列が、自動インクリメント列かどうかを示します。 dataTypeString宣言された列の型です。 defaultCollationTypeStringこの列に定義されている照合シーケンスです。 この値は、SQLCollationType クラスのいずれかの定数に対応します。
  • SQLCollationType.BINARY は、列が BINARY 照合シーケンスを使用することを示します。
  • SQLCollationType.NO_CASE は、列が NOCASE 照合シーケンスを使用することを示します。この場合、テキストの比較は、大文字と小文字を区別せずに実行されます。
SQLColumnSchema インスタンスを構築します。一般に、SQLColumnSchema コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。
flash.data.SQLConnection.loadSchema()flash.data.SQLCollationType
allowNull この列で、NULL 値が許可されているかどうかを示します。Boolean この列で、NULL 値が許可されているかどうかを示します。 NOT NULL 制限が宣言されている列では、false 値が allowNull プロパティに対して設定されます。 autoIncrement この列が、自動インクリメント列かどうかを示します。Boolean この列が、自動インクリメント列かどうかを示します。自動インクリメント列は特殊な型の PRIMARY KEY 列で、テーブルに新しい行が挿入されると、次の値が整数順で自動的に生成されます。 dataType 列のデータ型をストリングとして取得します。String 列のデータ型をストリングとして取得します。この値には、テーブルの定義に使用された CREATE TABLE ステートメントで指定されたデータ型の名前がそのまま使用されます。また、データ型が指定されていない場合は、null になります。 defaultCollationType この列に定義されているデフォルトの照合シーケンスを示します。String この列に定義されているデフォルトの照合シーケンスを示します。 このプロパティの値は、SQLCollationType クラスのいずれかの定数に対応します。
  • SQLCollationType.BINARY は、列が BINARY 照合シーケンスを使用することを示します。
  • SQLCollationType.NO_CASE は、列が NOCASE 照合シーケンスを使用することを示します。この場合、テキストの比較は、大文字と小文字を区別せずに実行されます。
flash.data.SQLCollationType
name 列の名前を取得します。String 列の名前を取得します。 primaryKey この列が、関連付けられているテーブルの主キー列(または複合キーの主キー列の 1 つ)かどうかを示します。Boolean この列が、関連付けられているテーブルの主キー列(または複合キーの主キー列の 1 つ)かどうかを示します。
SQLColumnNameStyle このクラスには、SQLConnection.columnNameStyle プロパティで有効な値を表す定数が含まれます。Object このクラスには、SQLConnection.columnNameStyle プロパティで有効な値を表す定数が含まれます。これらの値は、SQL SELECT ステートメントの結果として返されるオブジェクトで、列名(プロパティ名)の形式を制御する様々なオプションを示します。 flash.data.SQLConnection.columnNameStyleDEFAULT SELECT ステートメントから返される列名が、デフォルトの形式を使用することを示します。defaultString SELECT ステートメントから返される列名が、デフォルトの形式を使用することを示します。デフォルトの形式では、列名は [table-name|]_[column-name] という形式(SELECT ステートメントに複数のテーブルが含まれる場合)か、[column-name] という形式(SELECT ステートメントに単一のテーブルが含まれる場合)になります。 flash.data.SQLConnection.columnNameStyleLONG SELECT ステートメントから返される列名が、長い列名の形式を使用することを示します。longString SELECT ステートメントから返される列名が、長い列名の形式を使用することを示します。この形式では、列名は [table-name]_[column-name] の形式を使用します。SELECT ステートメントに含まれているテーブル数によって変化することはありません。 flash.data.SQLConnection.columnNameStyleSHORT SELECT ステートメントから返される列名が、短い列名の形式を使用することを示します。shortString SELECT ステートメントから返される列名が、短い列名の形式を使用することを示します。この形式では、列名は [column-name] の形式を使用します。SELECT ステートメントに含まれているテーブル数によって変化することはありません。

結果セットに同じ名前を持つ複数の列が存在する場合、その名前を持つプロパティが 1 つだけが結果オブジェクトに追加されます。そのプロパティに割り当てられる値は、その名前を持つ結果行の最後の列から取得されます。例えば、次のような SELECT ステートメントがあるとします。

	 SELECT customers.customerId, addresses.customerId
	 FROM customers INNER JOIN addresses
	    ON customers.customerId = addresses.customerId
	 

このステートメントが、短い列名の形式で SQLConnection に対して実行された場合、各結果オブジェクトには customerId という名前のプロパティが含まれます。このプロパティには、addresses テーブルの customerId 列から取得した値が含まれます。

flash.data.SQLConnection.columnNameStyle
SQLSchema SQLSchema クラスは、テーブル、ビューおよびインデックスなど、データベースオブジェクトのスキーマ情報の基本クラスです。Object SQLSchema クラスは、テーブル、ビューおよびインデックスなど、データベースオブジェクトのスキーマ情報の基本クラスです。

データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを使用してスキーマ情報をロードします。結果として得られた SQLSchemaResult インスタンスには、データベース内のオブジェクトを示すインスタンスの配列が含まれます。

一般に、SQLSchema インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()SQLSchema SQLSchema インスタンスを作成します。databaseString関連付けられたデータベースの名前です。 nameStringデータベースオブジェクトの名前です。 sqlStringデータベースオブジェクトの構築に使用された SQL です。 SQLSchema インスタンスを作成します。一般に、SQLSchema コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。 database このスキーマオブジェクトが属するデータベースの名前です。String このスキーマオブジェクトが属するデータベースの名前です。SQLConnection インスタンスに関連付けられているメインデータベース(SQLConnection インスタンスの open() メソッドまたは openAsync() メソッドを呼び出して開かれたデータベースファイル)の名前は "main" です。SQLConnection.attach() メソッドを使用して、この接続にアタッチされた他のデータベースの場合、この値は attach() メソッドの呼び出しで指定された名前になります。 flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()flash.data.SQLConnection.attach()name このスキーマオブジェクトの名前です。String このスキーマオブジェクトの名前です。データベース内の各オブジェクトは、一意の名前を持ちます。名前は、オブジェクトを作成する SQL ステートメントで定義されます(テーブルを作成する CREATE TABLE ステートメントなど)。

例えば、次の SQL ステートメントを使用してデータベースインデックスを作成した場合、そのインデックスのスキーマの name プロパティの値は "customer_index" になります。

CREATE INDEX customer_index ON customers (id)
sql このスキーマオブジェクトの作成に使用された SQL ステートメントのテキスト全体を返します。String このスキーマオブジェクトの作成に使用された SQL ステートメントのテキスト全体を返します。データベース内の各オブジェクトは、SQL ステートメントを使用して作成されます。

例えば、次の SQL を使用してデータベースインデックスを作成したとします。

CREATE INDEX customer_index ON customers (id)

このインデックスのスキーマの sql プロパティは、ステートメントのテキスト全体になります。

SQLCollationType このクラスには、SQLColumnSchema コンストラクターの defaultCollationType パラメーターで有効な値を表す定数と、SQLColumnSchema.defaultCollationType プロパティが含まれます。Object このクラスには、SQLColumnSchema コンストラクターの defaultCollationType パラメーターで有効な値を表す定数と、SQLColumnSchema.defaultCollationType プロパティが含まれます。

これらの値は、データベーステーブルの列で指定できる様々な照合シーケンスを表します。照合シーケンスは、データをソートおよび比較する方法です。例えば、データベースが大文字と小文字を区別するかどうかを指定します。

照合シーケンスの定義と使用について詳しくは、付録「ローカルデータベースでの SQL サポート」の「COLLATE」セクションを参照してください。

flash.data.SQLColumnSchema.defaultCollationTypeBINARY 列が BINARY 照合シーケンスを使用するように定義されていることを示します。binaryString 列が BINARY 照合シーケンスを使用するように定義されていることを示します。SQLCollationType.BINARY 照合では、バイト値を使用して 2 つの値を比較します。文字のテキストエンコードは考慮されません。

BINARY 照合が TEXT 記憶クラスの値で使用されている場合、データベースは、列の値のソートおよび比較を行うときに大文字と小文字を区別します。

flash.data.SQLColumnSchema.defaultCollationType
NO_CASE 列が NOCASE 照合シーケンスを使用するように定義されていることを示します。noCaseString 列が NOCASE 照合シーケンスを使用するように定義されていることを示します。SQLCollationType.NO_CASE 照合では、2 つの値をソートおよび比較するときに、大文字と小文字が無視されます。 flash.data.SQLColumnSchema.defaultCollationType
SQLSchemaResult SQLSchemaResult インスタンスには、SQLConnection.loadSchema() メソッドを呼び出した結果の情報が含まれます。Object SQLSchemaResult インスタンスには、SQLConnection.loadSchema() メソッドを呼び出した結果の情報が含まれます。このインスタンスには、SQLConnection.loadSchema() の呼び出しで使用された引数値に基づき、要求されたスキーマデータを保持する 4 つの Array プロパティが含まれます。

SQLConnection.loadSchema() 呼び出しの SQLSchemaResult インスタンスを取得するには、SQLConnection インスタンスの getSchemaResult() メソッドを呼び出します。一般に、SQLSchemaResult インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()flash.data.SQLConnection.getSchemaResult()SQLSchemaResult SQLSchemaResult インスタンスを作成します。tablesArrayloadSchema() 要求で指定された SQLTableSchema インスタンスの配列です。 viewsArrayloadSchema() 要求で指定された SQLViewSchema インスタンスの配列です。 indicesArrayloadSchema() 要求で指定された SQLIndexSchema インスタンスの配列です。 triggersArrayloadSchema() 要求で指定された SQLTriggerSchema インスタンスの配列です。 SQLSchemaResult インスタンスを作成します。一般に、SQLSchemaResult コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。 flash.data.SQLConnection.loadSchema()indices SQLIndexSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。Array SQLIndexSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。指定されたデータベースにインデックスが含まれていない場合、またはインデックスを結果から除外するように loadSchema() 呼び出しで示されている場合、indices プロパティは空の配列(length プロパティが 0 の配列)になります。 flash.data.SQLConnection.loadSchema()flash.data.SQLIndexSchematables SQLTableSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。Array SQLTableSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。指定されたデータベースにテーブルが含まれていない場合、またはテーブルを結果から除外するように loadSchema() 呼び出しで示されている場合、tables プロパティは空の配列(length プロパティが 0 の配列)になります。 flash.data.SQLConnection.loadSchema()flash.data.SQLTableSchematriggers SQLTriggerSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。Array SQLTriggerSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。指定されたデータベースにトリガーが含まれていない場合、またはトリガーを結果から除外するように loadSchema() 呼び出しで示されている場合、triggers プロパティは空の配列(length プロパティが 0 の配列)になります。 flash.data.SQLConnection.loadSchema()flash.data.SQLTriggerSchemaviews SQLViewSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。Array SQLViewSchema インスタンスの配列(SQLConnection.loadSchema() の呼び出しで要求)です。指定されたデータベースにビューが含まれていない場合、またはビューを結果から除外するように loadSchema() 呼び出しで示されている場合、views プロパティは空の配列(length プロパティが 0 の配列)になります。 flash.data.SQLConnection.loadSchema()flash.data.SQLViewSchema
SQLTransactionLockType このクラスには、option パラメーター(SQLConnection.begin() メソッド)で有効な値を表す定数が含まれます。Object このクラスには、option パラメーター(SQLConnection.begin() メソッド)で有効な値を表す定数が含まれます。 flash.data.SQLConnection.begin()DEFERRED 遅延ロックトランザクションのオプションを指定します。deferredString 遅延ロックトランザクションのオプションを指定します。遅延ロックトランザクションは、データベースが最初にアクセスされるまで、データベースのロックを取得しません。遅延トランザクションでは、最初の読み取りまたは書き込み操作が行われるまで、ロックは取得されません。 flash.data.SQLConnection.begin()EXCLUSIVE 排他的ロックトランザクションのオプションを指定します。exclusiveString 排他的ロックトランザクションのオプションを指定します。排他的ロックトランザクションでは、データベースに対するロックが直ちに取得されます。別の SQLConnection(同じ AIR アプリケーションまたは異なるアプリケーション)を介して同じデータベースに対して実行している他の SQLStatement オブジェクトは、そのデータベースに対する読み取り操作または書き込み操作を実行できなくなります。 flash.data.SQLConnection.begin()IMMEDIATE 即時ロックトランザクションのオプションを指定します。immediateString 即時ロックトランザクションのオプションを指定します。即時ロックトランザクションでは、データベースに対するロックが直ちに取得されます。別の SQLConnection(同じ AIR アプリケーションまたは異なるアプリケーション)を介して同じデータベースに対して実行している SQLStatement オブジェクトは、そのデータベースに対するデータの読み取り操作は実行できますが、書き込み操作は実行できなくなります。ただし、データベースのデータを読み取る他の接続の場合は、データベースのデータの初期状態は、トランザクション内の SQLConnection インスタンスの begin() メソッドが呼び出されたときよりも前のデータベースの状態と同一です。即時ロックトランザクション内で変更されたコミットされていないデータは、他の接続からは利用できません。 flash.data.SQLConnection.begin()SQLConnection SQLConnection インスタンスは、ローカル SQL データベースファイル(ローカルデータベース)の作成と接続を管理するために使用します。flash.events:EventDispatcher SQLConnection インスタンスは、ローカル SQL データベースファイル(ローカルデータベース)の作成と接続を管理するために使用します。

SQLConnection クラスの機能は、いくつかのカテゴリに分けられます。

  • ローカル SQL データベースファイルを作成または開くには、open() メソッドを呼び出すか、SQLConnection インスタンスを SQLStatement インスタンスの sqlConnection プロパティに設定します。

  • SQLConnection クラスは、SQL ステートメントの状態も示します。これには、複数のステートメントを 1 回のトランザクションで実行するメカニズムを含みます。トランザクションは、begin()commit() および rollback() メソッドを使用して管理します。また、setSavepoint()releaseSavepoint() および rollbackToSavepoint() メソッドを使用すれば、コードによるセーブポイントの定義および管理も可能です。これらのメソッドを使用すると、トランザクションを処理セットに細分化できます。

  • SQLConnection クラスは、接続済みのデータベースのデータベーススキーマ情報を示します。データベースのスキーマは、データベースのテーブル、列、インデックスおよびトリガーの定義を表します。詳細については、loadSchema() メソッドを参照してください。

  • SQLConnection クラスを使用すると、CCM を使用する AES でデータベースを暗号化できます。これにより、データの認証とプライバシーの両方が提供されます。データベースを暗号化するには、データベースを作成するときに、ByteArray を使用して 16 バイトのキーを指定する必要があります。このキーは、後で SQLConnection.reencrypt() メソッドを使用して変更できます。暗号化を使用すると、データベースを読み書きする際のパフォーマンスが低下します。暗号化は、ディスクに保存されたデータに適用されますが、メモリ内の一時データキャッシュには適用されません。暗号化は、メモリ内データベースでサポートされていません

  • SQLConnection インスタンスを使用したデータベースレベルのイベント通知の受信が可能で、キャッシュページサイズ、プロセスのキャンセルおよびステートメントの実行オプションなど、データベースのあらゆる状態を制御することができます。

SQLConnection インスタンスは、非同期および同期のいずれかの実行モードで機能します。同期実行を使用するには、open() メソッドを使用して、SQLConnection インスタンスのメインデータベースに接続します。非同期実行を使用するには、openAsync() メソッドを使用して、インスタンスのメインデータベースに接続します。

非同期実行を使用する場合は、イベントリスナーまたは Responder インスタンスを使用して、処理の完了または失敗を特定します。処理はメインアプリケーションスレッドではなくバックグラウンドで実行されるので、データベース処理の実行中でもアプリケーションは実行を続け、ユーザーの操作に応答します。非同期の SQLConnection インスタンスは、それぞれ独自のスレッドで SQL ステートメントを実行します。

非同期実行モードでは、適切なメソッドを呼び出して、特定の処理を開始します。処理の完了(または失敗)は、該当するイベントにリスナーを登録することで検出できます。各処理には、処理が正常に完了した場合に送出される関連イベントが用意されています。例えば、openAsync() メソッドの呼び出しが正常に完了した場合(データベース接続が開かれた場合)は、open イベントが送出されます。処理が失敗すると、error イベントが送出されます。SQLErrorEvent オブジェクトの error プロパティの SQLError インスタンスには、試行された処理や処理が失敗した理由など、特定のエラーに関する情報が格納されます。

同期実行を使用する場合は、処理の完了または失敗を特定するためにイベントリスナーを登録する必要はありません。エラーを特定するには、エラーをスローするステートメントを、try..catch ブロックで囲みます。同期処理はメイン実行スレッドで実行されるので、アプリケーションの機能(画面の更新や、マウスおよびキーボード操作の受け付けなど)は、データベース処理が実行されている間、すべて停止されます。長時間を要する処理では、一定の時間アプリケーションが停止する場合があります。

flash.data.SQLStatementflash.events.SQLEventflash.events.SQLErrorEventflash.errors.SQLErrorクイックスタート:ローカル SQL データベースの非同期操作(Flex)クイックスタート:ローカル SQL データベースの非同期操作(Flash)クイックスタート:ローカル SQL データベースの非同期操作(HTML)クイックスタート:ローカル SQL データベースの同期操作(Flex)クイックスタート:ローカル SQL データベースの同期操作(Flash)クイックスタート:ローカル SQL データベースの同期操作(HTML)update SQL UPDATE コマンドを実行した結果、任意の接続済みデータベースの任意のテーブルのデータが変化した場合に送出されます。flash.events.SQLUpdateEvent.UPDATEflash.events.SQLUpdateEvent SQL UPDATE コマンドを実行した結果、任意の接続済みデータベースの任意のテーブルのデータが変化した場合に送出されます。データの変化は、SQLStatement インスタンスから UPDATE ステートメントを実行した直接的な結果か、ステートメントの実行に応答してトリガーが発生した間接的な結果である場合があります。 flash.data.SQLStatementsetSavepoint setSavepoint() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.SET_SAVEPOINTflash.events.SQLEvent setSavepoint() メソッド呼び出しの処理が正常に完了したときに送出されます。 setSavepoint()schema loadSchema() メソッド呼び出しの処理が正常に完了し、スキーマの結果の準備が完了したときに送出されます。flash.events.SQLEvent.SCHEMAflash.events.SQLEvent loadSchema() メソッド呼び出しの処理が正常に完了し、スキーマの結果の準備が完了したときに送出されます。 loadSchema()rollbackToSavepoint rollbackToSavepoint() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.ROLLBACK_TO_SAVEPOINTflash.events.SQLEvent rollbackToSavepoint() メソッド呼び出しの処理が正常に完了したときに送出されます。 rollbackToSavepoint()rollback rollback() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.ROLLBACKflash.events.SQLEvent rollback() メソッド呼び出しの処理が正常に完了したときに送出されます。 rollback()releaseSavepoint releaseSavepoint() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.RELEASE_SAVEPOINTflash.events.SQLEvent releaseSavepoint() メソッド呼び出しの処理が正常に完了したときに送出されます。 releaseSavepoint()reencrypt reencrypt() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.REENCRYPTflash.events.SQLEvent reencrypt() メソッド呼び出しの処理が正常に完了したときに送出されます。 reencrypt()open openAsync() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.OPENflash.events.SQLEvent openAsync() メソッド呼び出しの処理が正常に完了したときに送出されます。 openAsync()insert SQL INSERT コマンドを実行した結果、任意の接続済みデータベースの任意のテーブルのデータが変化した場合に送出されます。flash.events.SQLUpdateEvent.INSERTflash.events.SQLUpdateEvent SQL INSERT コマンドを実行した結果、任意の接続済みデータベースの任意のテーブルのデータが変化した場合に送出されます。データの変化は、SQLStatement インスタンスから INSERT ステートメントを実行した直接的な結果か、ステートメントの実行に応答してトリガーが発生した間接的な結果である場合があります。 flash.data.SQLStatementerror 任意の SQLConnection オブジェクトの非同期処理でエラーが発生した場合に送出されます。flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent 任意の SQLConnection オブジェクトの非同期処理でエラーが発生した場合に送出されます。イベントオブジェクトとして送出された SQLErrorEvent インスタンスは、error プロパティを持ちます。このプロパティには、試行された処理と失敗した理由に関する情報が格納されています。 detach detach() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.DETACHflash.events.SQLEvent detach() メソッド呼び出しの処理が正常に完了したときに送出されます。 detach()delete SQL DELETE コマンドを実行した結果、任意の接続済みデータベースの任意のテーブルのデータが変化した場合に送出されます。flash.events.SQLUpdateEvent.DELETEflash.events.SQLUpdateEvent SQL DELETE コマンドを実行した結果、任意の接続済みデータベースの任意のテーブルのデータが変化した場合に送出されます。データの変化は、SQLStatement インスタンスから DELETE ステートメントを実行した直接的な結果か、ステートメントの実行に応答してトリガーが発生した間接的な結果である可能性があります。 flash.data.SQLStatementdeanalyze deanalyze() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.DEANALYZEflash.events.SQLEvent deanalyze() メソッド呼び出しの処理が正常に完了したときに送出されます。 deanalyze()commit commit() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.COMMITflash.events.SQLEvent commit() メソッド呼び出しの処理が正常に完了したときに送出されます。 commit()close close() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.CLOSEflash.events.SQLEvent close() メソッド呼び出しの処理が正常に完了したときに送出されます。 close()compact compact() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.COMPACTflash.events.SQLEvent compact() メソッド呼び出しの処理が正常に完了したときに送出されます。 compact()cancel cancel() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.CANCELflash.events.SQLEvent cancel() メソッド呼び出しの処理が正常に完了したときに送出されます。 cancel()begin begin() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.BEGINflash.events.SQLEvent begin() メソッド呼び出しの処理が正常に完了したときに送出されます。 begin()attach attach() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.ATTACHflash.events.SQLEvent attach() メソッド呼び出しの処理が正常に完了したときに送出されます。 attach()analyze analyze() の処理が正常に完了したときに送出されます。flash.events.SQLEvent.ANALYZEflash.events.SQLEvent analyze() の処理が正常に完了したときに送出されます。 analyze()SQLConnection SQLConnection インスタンスを作成します。メインアプリケーションサンドボックス外部のサンドボックスからコンストラクターが呼び出された場合。 SecurityErrorSecurityError SQLConnection インスタンスを作成します。 addEventListener イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。typeStringイベントのタイプです。 listenerFunctionイベントを処理するリスナー関数です。この関数は、次の例のように、Event オブジェクトを唯一のパラメーターとして受け取り、何も返さないものである必要があります。 function(evt:Event):void

関数の名前は任意に付けられます。

useCaptureBooleanfalse リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階で動作するかどうかを判断します。useCapturetrue に設定すると、リスナーはキャプチャ段階のみでイベントを処理し、ターゲット段階またはバブリング段階では処理しません。useCapturefalse に設定すると、リスナーはターゲット段階またはバブリング段階のみでイベントを処理します。3 つの段階すべてでイベントを受け取るには、addEventListener を 2 回呼び出します。useCapturetrue に設定して呼び出し、useCapturefalse に設定してもう一度呼び出します。 priorityint0.0イベントリスナーの優先度レベルです。優先度は、符号付き 32 ビット整数で指定します。数値が大きくなるほど優先度が高くなります。優先度が n のすべてのリスナーは、優先度が n-1 のリスナーよりも前に処理されます。複数のリスナーに対して同じ優先度が設定されている場合、それらは追加された順番に処理されます。デフォルトの優先度は 0 です。 useWeakReferenceBooleanfalseリスナーへの参照が強参照と弱参照のいずれであるかを判断します。デフォルトである強参照の場合は、リスナーのガベージコレクションが回避されます。弱参照では回避されません。

クラスレベルメンバー関数はガベージコレクションの対象外であるため、クラスレベルメンバー関数の useWeakReference は、ガベージコレクションの制限とは無関係に true に設定できます。ネストされた内部の関数であるリスナーに対して useWeakReferencetrue に設定すると、その関数はガベージコレクションされ、永続的ではなくなります。inner 関数に対する参照を作成(別の変数に保存)した場合、その関数はガベージコレクションされず、永続化された状態のままになります。

イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。イベントリスナーは、特定のタイプのイベント、段階、および優先度に関する表示リスト内のすべてのノードに登録できます。

イベントリスナーが正常に登録された後に、addEventListener() をさらに呼び出して優先度を変更することはできません。リスナーの優先度を変更するには、最初に removeListener() を呼び出す必要があります。その後、同じリスナーを新しい優先度レベルで再度登録できます。

リスナーが登録された後に、addEventListener()type または useCapture に別の値を設定)を再度呼び出すと、別のリスナー登録が作成されることに注意してください。例えば、最初にリスナーを登録するときに useCapturetrue に設定すると、そのリスナーはキャプチャ段階のみでリスニングします。同じリスナーオブジェクトを使用して再度 addEventListener() を呼び出すと(このとき、useCapturefalse を設定)、異なる 2 つのリスナーが登録されます。1 つはキャプチャ段階でリスニングするリスナーで、もう 1 つはターゲット段階とバブリング段階でリスニングするリスナーです。

ターゲット段階またはバブリング段階のみを対象とするイベントリスナーを登録することはできません。登録時にこれらの段階が組み合わされるのは、バブリングはターゲットノードの祖先にしか適用されないためです。

イベントリスナーが不要になった場合は、removeEventListener() を呼び出して、イベントリスナーを削除します。削除しない場合、メモリの問題が発生する可能性があります。ガベージコレクションでは、オブジェクトの送出が行われている限り、リスナーを削除しないので、イベントリスナーは自動的には削除されません(useWeakReference パラメーターが true に設定されていない場合)。

EventDispatcher インスタンスをコピーしても、それに関連付けられているイベントリスナーはコピーされません。新しく作成したノードにイベントリスナーが必要な場合は、ノードを作成した後に、リスナーを関連付ける必要があります。ただし、EventDispatcher インスタンスを移動した場合は、関連付けられているイベントリスナーも一緒に移動されます。

イベントがノードで処理されるときに、イベントリスナーがそのノードに登録中であれば、イベントリスナーは現在の段階ではトリガーされません。ただし、バブリング段階など、イベントフローの後の段階でトリガーすることができます。

イベントがノードで処理されているときにイベントリスナーがノードから削除された場合でも、イベントは現在のアクションによってトリガーされます。削除された後は、その後の処理で再び登録されない限り、イベントリスナーは二度と呼び出されません。

analyze データベースインデックスに関する統計を収集し、データベースに保存します。SQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)で、このメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorresourceNameStringnullインデックスを分析するデータベースまたはテーブルの名前です。指定されたリソースがテーブルで、アタッチされているデータベースの中で一意の名前を持つ場合は、テーブル名だけを指定する必要があります。ただし、テーブル名を [database-name].[table-name] という形式で指定し、テーブル名が一意でない場合のあいまいさを避けることができます。resourceName パラメーターが null(デフォルト)の場合、アタッチされているすべてのデータベースのすべてのインデックスが分析されます。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると analyze イベントまたは error イベントが送出されます。 データベースインデックスに関する統計を収集し、データベースに保存します。これらの統計情報は、クエリオプティマイザ(データベースエンジンの中で、各ステートメントを実行する最も効率的な方法を決定する部分)で使用できます。この統計情報は、特定のクエリを実行する場合に、クエリオプティマイザが最適なインデックスを選択するのに役立ちます。

データベースにインデックスが定義されていて、analyze() メソッドが呼び出されていない場合でも、ランタイムはそのインデックスを使用してステートメントを実行します。ただし、analyze() メソッドで生成された詳細な統計情報が存在しない場合は、ランタイムが特定のクエリに対して最も効率的なインデックスを選択できない場合があります。

(INSERTUPDATE または DELETE ステートメントの実行結果として)テーブルのデータが変更された場合、そのテーブルに関連付けられているインデックスも変更されます。analyze() によって生成された統計情報は、自動的に更新されません。したがって、大量のデータを変更した場合は、再度 analyze() メソッドを呼び出すと有効です。ただし、analyze() を再び呼び出した場合の効果は、様々な要因に左右されます。例えば、テーブルに定義されているインデックスの数や、変更された行数とテーブルの全行数との比率、インデックス付けされているテーブルのデータに見られる差異の大きさ、変更後のデータと変更前のデータの変化の大きさなどに左右されます。

resourceName パラメーターは、インデックスに対する処理を、アタッチされているすべてのデータベース、特定のデータベースまたは特定のテーブルについて実行するかどうかを示します。

このメソッドが呼び出されると、そのたびに以前に作成された統計データは削除され、データベースや resourceName パラメーターで指定されたテーブル(resourceNamenull の場合は接続されたすべてのデータベースの全テーブル)用に統計データが再作成されます。このメソッドは、データベース接続が開かれている状態であれば、いつでも呼び出せます。analyze() 操作とその統計データは、トランザクションに含まれません。ただし、データベースに現在処理中のトランザクションがある場合は、analyze() の呼び出しは推奨されません(inTransaction プロパティが true の場合)。これは、トランザクションで実行されたデータ、テーブルスキーマまたはインデックスの変更がコミットされていない場合、analyze() の呼び出しに反映されないので、トランザクションがコミットされると analyze() データが最新の状態でなくなることが理由です。

analyze() メソッドで作成された統計データを削除するには、deanalyze() メソッドを使用します。

deanalyze()analyzeflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
attach 別のデータベースを SQLConnection インスタンスに追加し、指定された名前を新しいデータベースに付けます。name パラメーターが空の文字列("")または null の場合 ArgumentErrorArgumentErrorreference パラメーターに指定された値が、flash.filesystem.File インスタンスでない場合。 ArgumentErrorArgumentErrorencryptionKey 引数が null ではなく、その length が 16 バイトではない場合 ArgumentErrorArgumentErrorreference パラメーターが null で、encryptionKey 引数が null ではない場合 ArgumentErrorArgumentErrorSQLConnection インスタンスがデータベースに接続されていない場合(connected プロパティが false の場合)、またはトランザクションが現在開いている場合(inTransaction プロパティが true の場合) IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrornameString新しくアタッチされたデータベースを識別するために使用する名前です。この名前は SQL ステートメントで使用し、指定されたデータベースに属しているテーブルを明示的に示すことができます。この場合、[database-name].[table-name] という書式を使用します。"main" および "temp" という名前は予約されており、使用できません。 referenceObjectnullアタッチするデータベースファイルへの参照(flash.filesystem.File インスタンス)です。この参照が存在しないファイルを参照している場合、新しいデータベースが作成されるか、openMode パラメーター(メインデータベースを接続した open() または openAsync() 呼び出し)で指定された値に従ってエラーがスローされます。

パラメーターの値が null の場合、メモリ内データベースが作成され、アタッチされます。

responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると attach イベントまたは error イベントが送出されます。 encryptionKeyflash.utils:ByteArraynullデータベースファイルの暗号化キー。attach() の呼び出しがデータベースを作成する場合、データベースは暗号化されて、指定したキーがデータベースの暗号化キーとして使用されます。呼び出しによって既存の暗号化されたデータベースがアタッチされる場合、値はそのデータベースの暗号化キーと一致している必要があり、一致しない場合はエラーが発生します。追加されるデータベースが暗号化されていない場合、または暗号化されないデータベースを作成する場合は、値として null(デフォルト)を指定する必要があります。

有効な暗号化キーは 16 バイト長です。メモリ内データベースは暗号化できないので、このパラメーターを null にする必要があります(reference パラメーターの値が null の場合)。

暗号化されたデータベースを追加する場合、指定した暗号化キーがデータベースの暗号化キーと一致していないと、例外が発生します。同期実行モードでは、SQLError 例外がスローされます。非同期モードでは、SQLErrorEvent が送出されて、イベントオブジェクトの error プロパティには SQLError インスタンスが設定されます。どちらの場合も、SQLError オブジェクトの errorID プロパティは 3138("開かれたファイルはデータベースファイルではない")です。

encryptionKey パラメーターは、AIR 1.5 以降で使用できます。

別のデータベースを SQLConnection インスタンスに追加し、指定された名前を新しいデータベースに付けます。データベースをアタッチすると、この SQLConnection インスタンスに対して実行される SQL ステートメントで、そのデータベースを使用できるようになります。

指定された名前を使用して、データベースが既にアタッチされている場合は、attach() を呼び出すとエラーが発生します。ただし、一意の名前を使用することで、同じデータベースを 2 回以上アタッチすることができます。単一の SQLConnection インスタンスにアタッチできるデータベースは、10 個までです。

attach() を使用して接続したデータベースに対しては、任意の SQL ステートメントを実行できます。このメソッドは、メインデータベース(open() または openAsync() を使用して接続したデータベース)に対して実行できます。SQL ステートメントは、そのステートメントの関連付けられている SQLConnection インスタンスにアタッチされているデータベースであれば、どのテーブルにでもアクセスできます。これには、単一のステートメントで複数のデータベースのテーブルにアクセスする場合も含まれます。ランタイムはステートメントのテーブル名を解決すると、SQLConnection インスタンスのデータベースを検索します。検索は open() メソッドまたは openAsync() メソッドを使用して接続されたデータベースから開始され、アタッチされた順番に行われます。ステートメントでデータベース名(attach() メソッドの name パラメーターで指定された名前)を使用して、テーブル名を明示的に修飾します。

attach() メソッドを使用してアタッチされたデータベースを削除するには、detach() メソッドを使用します。close() メソッドを呼び出して SQLConnection インスタンスを閉じると、アタッチされているデータベースは、すべてデタッチされます。

アタッチされているデータベースは、メインデータベースと同じ実行モード(同期または非同期)を使用します。これは、メインデータベースが open() メソッドまたは openAsync() メソッドのどちらを使用して接続されたかによって異なります。

open()openAsync()detach()attachflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
begin 接続のデータベースに対して実行されるすべての SQL ステートメントがグループ化されている範囲内で、トランザクションを開始します。SQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)で、このメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError指定されたオプションが、SQLTransactionLockType 定数の 1 つでない場合。 ArgumentErrorArgumentError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErroroptionStringnullトランザクションで使用するロック手順を示します。値は、SQLTransactionLockType クラスで定義されているいずれかの定数になります。
  • SQLTransactionLockType.DEFERRED は、最初の読み取り処理または書き込み処理が行われるまでロックを取得しないことを示します。
  • SQLTransactionLockType.EXCLUSIVE は、可能な限り早くロックを取得し、他の SQLConnection インスタンスによるデータベースに対する読み取り処理または書き込み処理を許可しないことを示します。
  • SQLTransactionLockType.IMMEDIATE は、可能な限り早くロックを取得し、他の SQLConnection インスタンスに対してデータベースの読み取り処理だけを許可し、書き込み処理は許可しないことを示します。

デフォルト値(null)は SQLTransactionLockType.DEFERRED と同じです。

responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると begin イベントまたは error イベントが送出されます。
接続のデータベースに対して実行されるすべての SQL ステートメントがグループ化されている範囲内で、トランザクションを開始します。

デフォルトでは、各 SQL ステートメントは自身のトランザクションの範囲内で実行され、ステートメントの実行が正常に完了した場合または失敗した場合にトランザクションが終了します。begin() メソッドを使用してトランザクションを作成すると、新しいマニュアルトランザクションが作成されます。それ以降、SQLConnection インスタンスに対して実行される SQL ステートメントはすべてトランザクションの範囲内で発生し、ステートメントによって実行されるアクションまたは変更は、グループとしてコミット(永続させる)またはロールバック(元に戻す)できます。

トランザクションを終了するには、commit() メソッドまたは rollback() メソッドを呼び出します。どちらを呼び出すかは、トランザクションのステートメントによる変更を永続させるか破棄するかによって決定します。

begin() に対するネストされた呼び出しは無視されます。トランザクション内でブックマークのように機能するセーブポイントを作成するには、setSavepoint() メソッドを呼び出します。その後で releaseSavepoint() または rollbackToSavepoint() メソッドを呼び出すことにより、SQL ステートメントを部分的にコミットまたはロールバックできます。ただし、begin() を呼び出してトランザクションを開始した場合、変更をデータベースに永続的にコミットするには、commit() メソッドを呼び出す必要があります。

トランザクションが現在開いている状態でデータベース接続が閉じられると、AIR はトランザクションを自動的にロールバックします。(注意:AIR 1.1 以前のバージョンの場合、開いているトランザクションは、接続が閉じられると自動的にコミットされます)。

トランザクションでは、ステートメントの実行が単一のデータベースに限定されていません。アタッチされている別のデータベースに対して実行されるステートメントを含めることもできます。

次の例は、トランザクション内で SQL の INSERT ステートメントを複数実行する例を示したものです。最初に、「employees」テーブルに 1 行が追加されます。次に、新しく挿入された行のプライマリキーが取得されます。このキーを使用して、関連付けられている「phoneNumbers」テーブルに 1 行を追加します。 package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.display.Sprite; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; public class MultiInsertTransactionExample extends Sprite { private var conn:SQLConnection; private var insertEmployee:SQLStatement; private var insertPhoneNumber:SQLStatement; public function MultiInsertTransactionExample():void { // define where to find the database file var appStorage:File = File.applicationStorageDirectory; var dbFile:File = appStorage.resolvePath("ExampleDatabase.db"); // open the database connection conn = new SQLConnection(); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.openAsync(dbFile); } // Called when the database is connected private function openHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.OPEN, openHandler); // start a transaction conn.addEventListener(SQLEvent.BEGIN, beginHandler); conn.begin(); } // Called when the transaction begins private function beginHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.BEGIN, beginHandler); // create and execute the first SQL statement: // insert an employee record insertEmployee = new SQLStatement(); insertEmployee.sqlConnection = conn; insertEmployee.text = "INSERT INTO employees (lastName, firstName, email) " + "VALUES (:lastName, :firstName, :email, :birthday)"; insertEmployee.parameters[":lastName"] = "Smith"; insertEmployee.parameters[":firstName"] = "Bob"; insertEmployee.parameters[":email"] = "bsmith@example.com"; insertEmployee.parameters[":birthday"] = new Date(1971, 8, 12); insertEmployee.addEventListener(SQLEvent.RESULT, insertEmployeeHandler); insertEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler); insertEmployee.execute(); } // Called after the employee record is inserted private function insertEmployeeHandler(event:SQLEvent):void { insertEmployee.removeEventListener(SQLEvent.RESULT, insertEmployeeHandler); insertEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // Get the employee id of the newly created employee row var result:SQLResult = insertEmployee.getResult(); var employeeId:Number = result.lastInsertRowID; // Add a phone number to the related phoneNumbers table insertPhoneNumber = new SQLStatement(); insertPhoneNumber.sqlConnection = conn; insertPhoneNumber.text = "INSERT INTO phoneNumbers (employeeId, type, number) " + "VALUES (:employeeId, :type, :number)"; insertPhoneNumber.parameters[":employeeId"] = employeeId; insertPhoneNumber.parameters[":type"] = "Home"; insertPhoneNumber.parameters[":number"] = "(555) 555-1234"; insertPhoneNumber.addEventListener(SQLEvent.RESULT, insertPhoneNumberHandler); insertPhoneNumber.addEventListener(SQLErrorEvent.ERROR, errorHandler); insertPhoneNumber.execute(); } // Called after the phone number record is inserted private function insertPhoneNumberHandler(event:SQLEvent):void { insertPhoneNumber.removeEventListener(SQLEvent.RESULT, insertPhoneNumberHandler); insertPhoneNumber.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // No errors so far, so commit the transaction conn.addEventListener(SQLEvent.COMMIT, commitHandler); conn.commit(); } // Called after the transaction is committed private function commitHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.COMMIT, commitHandler); trace("Transaction complete"); } // Called whenever an error occurs private function errorHandler(event:SQLErrorEvent):void { // If a transaction is happening, roll it back if (conn.inTransaction) { conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler); conn.rollback(); } trace(event.error.message); trace(event.error.details); } // Called when the transaction is rolled back private function rollbackHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler); // add additional error handling, close the database, etc. } } } 次の例は、トランザクション内で SQL の DELETE ステートメントを複数実行する例を示したものです。トランザクションを使用して、従業員レコードを削除します。最初に、「phoneNumbers」テーブルの関連する行が削除されます。次に、「employees」テーブルから、該当する従業員レコードの行が削除されます。 package { import flash.data.SQLConnection; import flash.data.SQLResult; import flash.data.SQLStatement; import flash.display.Sprite; import flash.events.SQLErrorEvent; import flash.events.SQLEvent; import flash.filesystem.File; public class MultiDeleteTransactionExample extends Sprite { private var conn:SQLConnection; private var deleteEmployee:SQLStatement; private var deletePhoneNumbers:SQLStatement; private var employeeIdToDelete:Number = 25; public function MultiDeleteTransactionExample():void { // define where to find the database file var appStorage:File = File.applicationStorageDirectory; var dbFile:File = appStorage.resolvePath("ExampleDatabase.db"); // open the database connection conn = new SQLConnection(); conn.addEventListener(SQLErrorEvent.ERROR, errorHandler); conn.addEventListener(SQLEvent.OPEN, openHandler); conn.openAsync(dbFile); } // Called when the database is connected private function openHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.OPEN, openHandler); // start a transaction conn.addEventListener(SQLEvent.BEGIN, beginHandler); conn.begin(); } // Called when the transaction begins private function beginHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.BEGIN, beginHandler); // Create and execute the first SQL statement: // Delete an employee's phone number records deletePhoneNumbers = new SQLStatement(); deletePhoneNumbers.sqlConnection = conn; deletePhoneNumbers.text = "DELETE FROM phoneNumbers " + "WHERE employeeId = :employeeId"; deletePhoneNumbers.parameters[":employeeId"] = employeeIdToDelete; deletePhoneNumbers.addEventListener(SQLEvent.RESULT, deletePhoneNumbersHandler); deletePhoneNumbers.addEventListener(SQLErrorEvent.ERROR, errorHandler); deletePhoneNumbers.execute(); } // Called after the phone number records are deleted private function deletePhoneNumbersHandler(event:SQLEvent):void { deletePhoneNumbers.removeEventListener(SQLEvent.RESULT, deletePhoneNumbersHandler); deletePhoneNumbers.removeEventListener(SQLErrorEvent.ERROR, errorHandler); deleteEmployee = new SQLStatement(); deleteEmployee.sqlConnection = conn; deleteEmployee.text = "DELETE FROM employees " + "WHERE employeeId = :employeeId"; deleteEmployee.parameters[":employeeId"] = employeeIdToDelete; deleteEmployee.addEventListener(SQLEvent.RESULT, deleteEmployeeHandler); deleteEmployee.addEventListener(SQLErrorEvent.ERROR, errorHandler); deleteEmployee.execute(); } // Called after the employee record is deleted private function deleteEmployeeHandler(event:SQLEvent):void { deleteEmployee.removeEventListener(SQLEvent.RESULT, deleteEmployeeHandler); deleteEmployee.removeEventListener(SQLErrorEvent.ERROR, errorHandler); // No errors so far, so commit the transaction conn.addEventListener(SQLEvent.COMMIT, commitHandler); conn.commit(); } // Called after the transaction is committed private function commitHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.COMMIT, commitHandler); trace("Transaction complete"); } // Called whenever an error occurs private function errorHandler(event:SQLErrorEvent):void { // If a transaction is happening, roll it back if (conn.inTransaction) { conn.addEventListener(SQLEvent.ROLLBACK, rollbackHandler); conn.rollback(); } trace(event.error.message); trace(event.error.details); } // Called when the transaction is rolled back private function rollbackHandler(event:SQLEvent):void { conn.removeEventListener(SQLEvent.ROLLBACK, rollbackHandler); // add additional error handling, close the database, etc. } } }
commit()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()flash.data.SQLTransactionLockTypebeginflash.events:SQLEvent処理が完了したときに送出されます。 処理が完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
cancel SQLConnection インスタンスに接続しているデータベースに対して現在実行中の SQL ステートメントをすべて中止します。SQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)で、このメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorresponderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると cancel イベントまたは error イベントが送出されます。 SQLConnection インスタンスに接続しているデータベースに対して現在実行中の SQL ステートメントをすべて中止します。このメソッドは、長時間実行されているクエリや暴走したクエリを停止するために使用できます。

cancel() メソッドを呼び出したときに実行しているステートメントが存在する場合、このメソッドによってステートメントの処理が中止され、未完了の更新またはトランザクションはロールバックされます。現在実行しているステートメントが存在しない場合、このメソッドを呼び出すと、開いているトランザクションがロールバックされます。開いているトランザクションがない場合は、何も実行されません。

flash.data.SQLStatementcancelflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
close 現在のデータベース接続を閉じます。同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorresponderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると close イベントまたは error イベントが送出されます。 現在のデータベース接続を閉じます。アタッチされているデータベースもデタッチされます。

開いているトランザクションがある状態で close() を呼び出すと、そのトランザクションはロールバックされます。SQLConnection インスタンスがガベージコレクションされると、ランタイムは自動的に close() を呼び出します。これには、SQLConnection がデータベースに接続されたまま AIR アプリケーションが閉じられた場合も含まれます。

closeflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
commit 既存のトランザクションをコミットします。トランザクションのステートメントによって実行されたアクションは、永続的にデータベースに適用されます。SQLConnection インスタンスがデータベースに接続されていない(connected プロパティが false)の状態でメソッドを呼び出した場合、または現在開いているトランザクションが存在しない場合(inTransaction プロパティが false の場合)。 IllegalOperationErrorflash.errors:IllegalOperationErrorresponderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると commit イベントまたは error イベントが送出されます。 既存のトランザクションをコミットします。トランザクションのステートメントによって実行されたアクションは、永続的にデータベースに適用されます。

トランザクション内でブックマークのように機能する中間セーブポイントを作成するには、setSavepoint() メソッドを呼び出します。セーブポイントを使用すると、releaseSavepoint() メソッドまたは rollbackToSavepoint() メソッドを呼び出すことにより、トランザクションの一部をコミットまたはロールバックできます。ただし、begin() メソッドを呼び出してトランザクションを開始した場合、変更をデータベースに永続的に保存するには、commit() メソッドを呼び出して、トランザクション全体をコミットする必要があります。

セーブポイントを使用しているトランザクションでは、トランザクション全体をコミットする場合、rollbackToSavepoint() メソッドを使用してロールバックされたステートメントはコミットされません。releaseSavepoint() を使用してコミットされたステートメントやセーブポイントが解放またはロールバックされていないステートメントは、データベースにコミットされません。

begin()rollback()setSavepoint()releaseSavepoint()rollbackToSavepoint()commitflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent処理が正常に完了しなかった場合に送出されます。 処理が正常に完了しなかった場合に送出されます。
compact データベースの未使用領域を再要求します。SQLConnection インスタンスがデータベースに接続されていない(connected プロパティが false)状態でメソッドを呼び出した場合、またはトランザクションが現在処理中の場合(inTransaction プロパティが true の場合)。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorresponderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると compact イベントまたは error イベントが送出されます。 データベースの未使用領域を再要求します。オブジェクト(テーブル、インデックスまたはトリガー)がデータベースからドロップされた場合は、空のまま残されます。そのため、データベースファイルのサイズが必要以上に大きくなりますが、INSERT 操作の処理速度が向上します。時間の経過と共に、INSERT 操作および DELETE 操作によってデータベースファイルの構造に断片化が生じ、データベースコンテンツへのディスクアクセスの速度が低下します。このメソッドは、空きページを削除し、テーブルのデータが連続するように整理を行い、データベースファイルの構造をクリーンアップすることで、データベースファイルのサイズを縮小します。

compact() 操作は、アタッチされているデータベースファイルに対しては実行できません。SQLConnection インスタンスによって開かれたメイン(元の)データベースファイルにのみ実行できます。この操作は、アクティブなトランザクションがある場合は失敗します。また、メモリ内のデータベースには影響を与えません。

compactflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
deanalyze analyze() メソッドの呼び出して作成された統計情報をすべて削除します。SQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)で、このメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorresponderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると deanalyze イベントまたは error イベントが送出されます。 analyze() メソッドの呼び出しで作成された統計情報をすべて削除します。

analyze() メソッドで作成された統計情報はデータベースの領域を使用するので、いくつかのインデックスやテーブルをドロップした後に deanalyze() を呼び出すことで、その領域を再要求することができます。

この処理はアクティブなトランザクションには含まれていません。

analyze()deanalyzeflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
detach attach() メソッドを使用して SQLConnection インスタンスにアタッチされた追加のデータベースをデタッチします。name 引数が null の場合、または空のストリング("")が格納されている場合。 ArgumentErrorArgumentErrorSQLConnection インスタンスがデータベースに接続されていない(connected プロパティが false)の状態でこのメソッドを呼び出した場合、または開いているトランザクション(inTransaction プロパティが true)が SQLConnection インスタンスに存在する場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrornameStringデタッチするデータベースの指定された名前です。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると detach イベントまたは error イベントが送出されます。 attach() メソッドを使用して SQLConnection インスタンスにアタッチされた追加のデータベースをデタッチします。異なる名前を使用することで、同じデータベースを 2 回以上アタッチすることができます。この場合、1 つの接続をデタッチしても、残りの接続は維持されます。接続に開いているトランザクションが存在する場合(inTransaction プロパティが true の場合)、データベースをデタッチできません。 attach()detachflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。getSchemaResult loadSchema() メソッド呼び出しの結果に対するアクセスを提供します。flash.data:SQLSchemaResult loadSchema() メソッド呼び出しの結果に対するアクセスを提供します。getSchemaResult() メソッドは、結果の先入れ先出しキューとして動作します。loadSchema() メソッドの呼び出しが完了するたびに(schema イベントが非同期実行モードで送出されるたびに)、新しい SQLSchemaResult オブジェクトがキューに追加されます。getSchemaResult() メソッドが呼び出されるたびに、最も古い結果(最初にキューに追加されたもの)が返され、キューから削除されます。キューに存在するオブジェクトがなくなると、getSchemaResult()null を返します。

データベース接続が閉じられると、メソッドは null を返します。

loadSchema()スキーマイベント
loadSchema 接続されているデータベースまたはアタッチされている任意のデータベースからスキーマ情報をロードします。SQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)でメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError指定されている type 引数の値が、許可されているいずれかの型ではない場合。 ArgumentErrorArgumentError同期実行モードを使用している場合で、名前またはデータベースのパラメーターに無効な値が指定されている場合。 SQLErrorflash.errors:SQLErrortypeClassnullロードするスキーマのタイプを示します。 null 値(デフォルト)は、すべてのスキーマ情報をロードすることを示します。 このパラメーターに null 以外の値を指定すると、ロードするスキーマの範囲が絞り込まれ、不要な可能性のある情報が結果から排除されるので、処理がより効率的になります。 指定する値は、以下のいずれかのクラスのクラス名でなければなりません。
  • SQLIndexSchema
  • SQLTableSchema
  • SQLTriggerSchema
  • SQLViewSchema
nameStringnullどのリソースのスキーマをロードするかを示します。この値の使用方法は、指定されている type 引数に基づきます。一般的には、テーブル名、インデックスまたはビュー名など、データベースオブジェクトの名前になります。値が指定されている場合、指定された名前を持つデータベースオブジェクトのスキーマ情報だけが、結果に含められます。

指定された値が有効でない場合は、error イベントが送出されます(同期実行モードの場合はエラーがスローされます)。メソッドの説明で示されているように、type パラメーターの値は、指定されたオブジェクト型に対応していなければ有効な値とはなりません。

name 引数が null の場合は、指定されたタイプのすべてのスキーマが含められます。指定された値が有効な値でない場合は、error イベントが送出されます。

databaseStringmainスキーマをロードするデータベースの名前です。指定された値が有効な値でない場合は、error イベントが送出されます。 includeColumnSchemaBooleantrueテーブルの列とビューのスキーマ情報を結果に含めるかどうかを示します。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると schema イベントまたは error イベントが送出されます。
接続されているデータベースまたはアタッチされている任意のデータベースからスキーマ情報をロードします。スキーマは、データベースのテーブル、列、インデックスおよびトリガーの構造を示すものです。

ロードされているスキーマにアクセスするには、SQLConnection.getSchemaResult() メソッドを使用します。

非同期実行モードでは、処理が正しく完了すると schema イベントが送出され、処理が失敗すると error イベントが送出されます。

type および name の各パラメーター値の組み合わせによって、loadSchema() メソッドが生成するスキーマデータのタイプが決定されます。また、これにより、生成される SQLSchemaResult インスタンスの各プロパティの値も決定されます。次の表は、有効な type および name の組み合わせと、結果として生成されるスキーマデータを一覧にしたものです。

type 引数name 引数スキーマデータを取得する対象: nullnullデータベースのすべてのオブジェクト(すべてのテーブル、ビュー、トリガーおよびインデックス)SQLIndexSchemanullデータベースのすべてのインデックスSQLIndexSchema有効なテーブル名指定されたテーブルに対して定義されているすべてのインデックスSQLIndexSchema有効なインデックス名指定されたインデックスSQLTableSchemanullデータベースのすべてのテーブルSQLTableSchema有効なテーブル名指定されたテーブルSQLTriggerSchemanullデータベースのすべてのトリガーSQLTriggerSchema有効なテーブル名指定されたテーブルに関連付けられているすべてのトリガーSQLTriggerSchema有効なビュー名指定されたビューに関連付けられているすべてのトリガー SQLTriggerSchema有効なトリガー名指定されたトリガー SQLViewSchemanullデータベースのすべてのビューSQLViewSchema有効なビュー名指定されたビュー

type 引数および name 引数の組み合わせが、指定されている組み合わせに対応していない場合は、error イベントが送出されるか(非同期実行モードの場合)、例外がスローされます(同期実行モードの場合)。例えば、type 引数が SQLViewSchema で、name 引数がビュー名ではなくテーブル名の場合、指定された名前を持つ指定された型のオブジェクトがデータベースに含まれていないことを示すエラーが発生します。

データベースが空の場合(データベースにテーブル、ビュー、トリガーまたはインデックスが含まれていない場合)、loadSchema() メソッドを呼び出すとエラーが発生します。

getSchemaResult()スキーマイベントflash.data.SQLIndexSchemaflash.data.SQLTableSchemaflash.data.SQLTriggerSchemaflash.data.SQLViewSchemaschemaflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent処理が正常に完了しなかった場合に送出されます。 処理が正常に完了しなかった場合に送出されます。
openAsync ファイルシステムの指定された場所にあるデータベースファイルを非同期接続で開くか、その場所に新しいデータベースファイルを作成して開くか、メモリ内データベースを作成して開きます。SQLConnection インスタンスに、開かれているデータベースへの接続が既にある場合(connected プロパティが true の場合)。 IllegalOperationErrorflash.errors:IllegalOperationErrorreference パラメーターに指定された値が、flash.filesystem.File インスタンスでない場合。 ArgumentErrorArgumentErrorencryptionKey 引数が null ではなく、その length が 16 バイトではない場合 ArgumentErrorArgumentErrorreference パラメーターが null で、encryptionKey 引数が null ではない場合 ArgumentErrorArgumentError無効な pageSize パラメーターが指定された場合。これにはモードが SQLMode.READ である場合にページサイズを渡すことも含まれます。 ArgumentErrorArgumentErrorreferenceObjectnull開かれているデータベースファイルの場所です。この値は、flash.filesystem.File インスタンスでなければなりません。パラメーターの値が null の場合、メモリ内データベースが作成され、開かれます。 openModeStringcreateデータベースを開く方法を示します。値は SQLMode クラスに定義されている任意の定数です。デフォルト値は SQLMode.CREATE で、指定された場所にデータベースファイルが存在しない場合は、新たに作成することを示します。openModeSQLMode.READ で、指定されたファイルが存在しない場合は、error イベントが送出されます。このパラメーターは、reference パラメーターが null の場合は無視されます。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。responder 引数が null の場合、実行が完了すると open イベントまたは error イベントが送出されます。 autoCompactBooleanfalseデータベースの未使用領域を自動的に再要求するかどうかを示します。このパラメーターは、新規データベースファイルを作成した場合か、テーブルが作成されていないデータベースファイルを開いた場合のみ有効です。デフォルトでは、削除されたデータが使用していた領域はデータベースファイルに残り、必要に応じて再使用されます。このパラメーターを true に設定すると、データベースが自動的に未使用領域を再要求します。データがデータベースに書き込まれるたびに追加の処理が必要になるため、これはパフォーマンスに悪影響を与える可能性があります。また、時間が経過するとデータベースのデータが断片化する原因にもなります。任意のタイミングでデータベースファイルの未使用領域をデータベースに強制的に再要求させ、データベースファイルの最適化を行うには、compact() メソッドを使用します。

このパラメーターは、openMode パラメーターが SQLMode.READ である場合には無視されます。

pageSizeint1024データベースのページサイズ(バイト単位)を示します。このパラメーターは、新規データベースファイルを作成した場合か、テーブルが作成されていないデータベースファイルを開いた場合のみ有効です。値は 2 の累乗で、512 以上 32768 以下でなければなりません。初期設定値は 1024 バイトです。この値は、任意のテーブルを作成する前にのみ設定できます。テーブルの作成後にこの値を変更しようとするとエラーが発生します。 encryptionKeyflash.utils:ByteArraynullデータベースファイルの暗号化キー。openAsync() の呼び出しがデータベースを作成する場合、データベースは暗号化されて、指定したキーがデータベースの暗号化キーとして使用されます。呼び出しによって暗号化されたデータベースが開かれる場合、値はそのデータベースの暗号化キーと一致している必要があり、一致しない場合はエラーが発生します。開かれるデータベースが暗号化されていない場合は、値として null (デフォルト)を指定する必要があります。指定しないとエラーが発生します。

有効な暗号化キーは 16 バイト長です。メモリ内データベースは暗号化できないので、このパラメーターを null にする必要があります(reference パラメーターの値が null の場合)。

暗号化されたデータベースを開く場合、指定した暗号化キーがデータベースの暗号化キーと一致していないと、SQLErrorEvent が送出されます。イベントオブジェクトの error プロパティには、SQLError インスタンスが設定されています。その SQLError オブジェクトの errorID プロパティは 3138("開かれたファイルはデータベースファイルではない")です。

encryptionKey パラメーターは、AIR 1.5 以降で使用できます。

ファイルシステムの指定された場所にあるデータベースファイルを非同期接続で開くか、その場所に新しいデータベースファイルを作成して開くか、メモリ内データベースを作成して開きます。このメソッドを使用してデータベースを開いた場合、データベースを作成および開く処理は、この SQLConnection インスタンスを使用して実行される他の処理(この SQLConnection インスタンスに関連付けられている SQLStatement インスタンスが実行するステートメントの実行など)と同様、非同期的に実行されます。同期的に処理を実行するには、open() メソッドを使用してデータベース接続を開きます。

データベースが接続されたら、SQLStatement インスタンスを使用して SQL コマンドを実行します。データベースレベルの操作(トランザクションの開始または終了、スキーマ情報の読み込み、その他の操作など)を実行するには、SQLConnection インスタンスを使用します。

openAsync() メソッドを使用して接続されたデータベースには、自動的に "main" というデータベース名が割り当てられます。この名前は、SQL ステートメントで明示的にテーブル名を修飾する場合に使用でき、[database-name].[table-name] という書式を使用します。

open()close()flash.data.SQLModeopenflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent処理が失敗したときに送出されます。処理に失敗した場合、接続が開いたままになることはありません。 処理が失敗したときに送出されます。
open ファイルシステムの指定された場所にあるデータベースファイルを同期接続で開くか、その場所に新しいデータベースファイルを作成して開くか、メモリ内データベースを作成して開きます。SQLConnection インスタンスに、開かれているデータベースへの接続が既にある場合(connected プロパティが true の場合)。 IllegalOperationErrorflash.errors:IllegalOperationError処理が失敗した場合。処理に失敗した場合、接続が開いたままになることはありません。 SQLErrorflash.errors:SQLErrorreference パラメーターに指定された値が、flash.filesystem.File インスタンスでない場合。 ArgumentErrorArgumentErrorencryptionKey 引数が null ではなく、その length が 16 バイトではない場合 ArgumentErrorArgumentErrorreference パラメーターが null で、encryptionKey 引数が null ではない場合 ArgumentErrorArgumentError無効な pageSize パラメーターが指定された場合。これにはモードが SQLMode.READ である場合にページサイズを渡すことも含まれます。 ArgumentErrorArgumentErrorreferenceObjectnull開かれているデータベースファイルの場所です。この値は、flash.filesystem.File インスタンスでなければなりません。パラメーターの値が null の場合、メモリ内データベースが作成され、開かれます。 openModeStringcreateデータベースを開く方法を示します。値は SQLMode クラスに定義されている任意の定数です。デフォルト値は SQLMode.CREATE で、指定された場所にデータベースファイルが存在しない場合は、新たに作成することを示します。openModeSQLMode.READ で、指定されたファイルが存在しない場合は、エラーが発生します。このパラメーターは、reference パラメーターが null の場合は無視されます。 autoCompactBooleanfalseデータベースの未使用領域を自動的に再要求するかどうかを示します。このパラメーターは、新規データベースファイルを作成した場合か、テーブルが作成されていないデータベースファイルを開いた場合のみ有効です。デフォルトでは、削除されたデータが使用していた領域はデータベースファイルに残り、必要に応じて再使用されます。このパラメーターを true に設定すると、データベースが自動的に未使用領域を再要求します。データがデータベースに書き込まれるたびに追加の処理が必要になるため、これはパフォーマンスに悪影響を与える可能性があります。また、時間が経過するとデータベースのデータが断片化する原因にもなります。compact() メソッドを使用すると、任意のタイミングでデータベースファイルの未使用領域をデータベースに強制的に再要求させ、データベースファイルの最適化を行うことができます。

このパラメーターは、openMode パラメーターが SQLMode.READ である場合には無視されます。

pageSizeint1024データベースのページサイズ(バイト単位)を示します。このパラメーターは、新規データベースファイルを作成した場合か、テーブルが作成されていないデータベースファイルを開いた場合のみ有効です。値は 2 の累乗で、512 以上 32768 以下でなければなりません。初期設定値は 1024 バイトです。この値は、任意のテーブルを作成する前にのみ設定できます。テーブルの作成後にこの値を変更しようとするとエラーが発生します。 encryptionKeyflash.utils:ByteArraynullデータベースファイルの暗号化キー。open() の呼び出しがデータベースを作成する場合、データベースは暗号化されて、指定したキーがデータベースの暗号化キーとして使用されます。呼び出しによって暗号化されたデータベースが開かれる場合、値はそのデータベースの暗号化キーと一致している必要があり、一致しない場合はエラーが発生します。開かれるデータベースが暗号化されていない場合、または暗号化されないデータベースを作成する場合は、値として null (デフォルト)を指定する必要があります。指定しないとエラーが発生します。

有効な暗号化キーは 16 バイト長です。メモリ内データベースは暗号化できないので、このパラメーターを null にする必要があります(reference パラメーターの値が null の場合)。

暗号化されたデータベースを開く場合、指定した暗号化キーがデータベースの暗号化キーと一致していないと、SQLError 例外がスローされます。その場合、SQLError オブジェクトの errorID プロパティは 3138("開かれたファイルはデータベースファイルではない")です。

encryptionKey パラメーターは、AIR 1.5 以降で使用できます。

ファイルシステムの指定された場所にあるデータベースファイルを同期接続で開くか、その場所に新しいデータベースファイルを作成して開くか、メモリ内データベースを作成して開きます。このメソッドを使用してデータベースを開いた場合、データベースを作成および開く処理は、この SQLConnection インスタンスを使用して実行される他の処理(この SQLConnection インスタンスに関連付けられている SQLStatement インスタンスが実行するステートメントの実行など)と同様、同期的に実行されます。非同期的に処理を実行するには、openAsync() メソッドを使用してデータベース接続を開きます。

データベースが接続されたら、SQLStatement インスタンスを使用して SQL コマンドを実行します。データベースレベルの操作(トランザクションの開始または終了、スキーマ情報の読み込み、その他の操作など)を実行するには、SQLConnection インスタンスを使用します。

open() メソッドを使用して接続したデータベースには、自動的に「main」というデータベース名が割り当てられます。この名前は、SQL ステートメントで明示的にテーブル名を修飾する場合に使用でき、[database-name].[table-name] という書式を使用します。

openAsync()close()flash.data.SQLModeopenflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。
reencrypt 暗号化されたデータベースの暗号化キーを変更します。newEncryptionKey の値が null の場合、またはその length が 16 バイトではない場合。 ArgumentErrorArgumentError接続が開いていない場合、または開いているトランザクションがある場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrornewEncryptionKeyflash.utils:ByteArrayデータベースの新しい暗号化キーが格納されている ByteArray。有効な暗号化キーは 16 バイト長です。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。responder 引数が null の場合、実行が完了すると reencrypt イベントまたは error イベントが送出されます。 暗号化されたデータベースの暗号化キーを変更します。このメソッドは、メインデータベース(open() メソッドまたは openAsync() メソッドを使用して接続されたデータベース)の暗号化キーのみを変更します。reencrypt() は、作成時に暗号化されたデータベースに対してのみ呼び出すことができます。いったん暗号化して作成したデータベースの暗号化を解除することはできません。同様に、暗号化しないで作成したデータベースを、後から暗号化することはできません。

再暗号化操作は、専用のトランザクションで実行します。再暗号化処理を中断した場合、データベースはトランザクションをロールバックし、暗号化キーは変更されません。

open()openAsync()attach()reencryptflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent処理が失敗したときに送出されます。 処理が失敗したときに送出されます。
releaseSavepoint このメソッドでは、直近のセーブポイントまたは名前が指定されている場合は該当する名前のセーブポイント以降に実行された SQL 操作をコミットします。name パラメーター値が空の文字列("")の場合。 ArgumentErrorArgumentErrorSQLConnection インスタンスがデータベースに接続されていない(connected プロパティが false)の状態でメソッドを呼び出した場合、または現在開いているトランザクションが存在しない場合(inTransaction プロパティが false の場合)。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrornameStringnullセーブポイントの名前を示す文字列で、このセーブポイント以降の SQL 操作がすべてコミットされます。このパラメーターに値が指定されていない、または null(デフォルト値)の場合は、名前のない直近の(name 値を指定せずに setSavepoint() を呼び出して作成した)セーブポイントが使用されます。name 値には、空の文字列("")を使用できません。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定する応答オブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると releaseSavepoint イベントまたは error イベントが送出されます。 このメソッドでは、直近のセーブポイントまたは名前が指定されている場合は該当する名前のセーブポイント以降に実行された SQL 操作をコミットします。

変更を永続的にデータベースに保存するには、トランザクション全体がコミットされる必要があります。begin() メソッドを使用してトランザクションを開始した場合、トランザクション全体をコミットするには、commit() メソッドを呼び出す必要があります。inTransactionfalse の状態で、setSavepoint() を呼び出してトランザクションを開始した場合、トランザクション全体を終了するには、commit() メソッドを呼び出すか、トランザクションの最初のセーブポイントを対象として releaseSavepoint() または rollbackToSavepoint() を呼び出します。

コードから rollback() メソッドを呼び出すと、トランザクションがロールバックされる前に releaseSavepoint() が呼び出されたかどうかに関わらず、トランザクション内のすべての変更が完全に破棄されます。

パラメーターなしで(または name パラメーターに null を指定して)このメソッドが呼び出されると、名前のない直近のセーブポイント(name パラメーターを指定せずに setSavepoint() を呼び出して作成された直近のセーブポイント)以降に実行されたデータベースの変更がコミットされます。例えば、setSavepoint() メソッドが 3 回呼び出されたとすると、3 つのセーブポイントが設定されます。その時点で releaseSavepoint() を呼び出すと、3 番目(最新)のセーブポイント以降に実行された SQL 操作がコミットされます。

name パラメーターに値が指定されている場合、このメソッドは、指定された名前のセーブポイント以降に実行されたすべての SQL 操作をコミットします。指定されたセーブポイントよりも新しいセーブポイントが他に作成されている場合、これらのセーブポイント以降に実行された操作もコミットされます。

セーブポイントが解放またはロールバックされると、該当するセーブポイントとそれ以降に設定されたセーブポイントは削除されます。releaseSavepoint() またはrollbackToSavepoint() を呼び出してセーブポイントを削除した後に、コードから SQL 操作を実行すると、追加された操作は、残っている直近のセーブポイントに属します(つまり、これらの操作は、削除されたセーブポイントよりも前に作成された直近のセーブポイントに属します)。セーブポイントが残っていない場合、操作はメイントランザクションに属します。

setSavepoint()rollbackToSavepoint()releaseSavepointflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
removeEventListener EventDispatcher オブジェクトからリスナーを削除します。typeStringイベントのタイプです。 listenerFunction削除するリスナーオブジェクトです。 useCaptureBooleanfalse リスナーが、キャプチャ段階、またはターゲットおよびバブリング段階に対して登録されたかどうかを示します。リスナーがキャプチャ段階だけでなくターゲット段階とバブリング段階にも登録されている場合は、removeEventListener() を 2 回呼び出して両方のリスナーを削除する必要があります。1 回は useCapture()true に設定し、もう 1 回は useCapture()false に設定する必要があります。 EventDispatcher オブジェクトからリスナーを削除します。対応するリスナーが EventDispatcher オブジェクトに登録されていない場合は、このメソッドを呼び出しても効果はありません。 rollbackToSavepoint 直近のセーブポイントまたは名前が指定されている場合は該当する名前のセーブポイント以降に実行されたすべての SQL 操作をロールバックします。name パラメーター値が空の文字列("")の場合。 ArgumentErrorArgumentErrorSQLConnection インスタンスがデータベースに接続されていない(connected プロパティが false)の状態でメソッドを呼び出した場合、または現在開いているトランザクションが存在しない場合(inTransaction プロパティが false の場合)。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrornameStringnullセーブポイントの名前を示す文字列で、データベースの状態がこのセーブポイントまでロールバックされます。このパラメーターに値が指定されていない、または null(デフォルト値)の場合は、名前のない直近の(name 値を指定せずに setSavepoint() を呼び出して作成した)セーブポイントが使用されます。name 値には、空の文字列("")を使用できません。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定する応答オブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると rollbackToSavepoint イベントまたは error イベントが送出されます。 直近のセーブポイントまたは名前が指定されている場合は該当する名前のセーブポイント以降に実行されたすべての SQL 操作をロールバックします。

commit() メソッドを呼び出してトランザクション全体をコミットすると、rollbackToSavepoint() メソッドでまだロールバックされていないトランザクション内の変更はすべて、データベースに永続的に保存されます。また、rollback() メソッドを呼び出すと、トランザクションがロールバックされる前に個々のセーブポイントが解放(コミット)されているかどうかに関わらず、すべての変更が完全に破棄されます。

パラメーターなしで(または name パラメーターに null を指定して)このメソッドが呼び出されると、名前のない直近のセーブポイント(name パラメーター値を指定せずに実行した直近の setSavepoint() 呼び出し)以降に行われたデータベースの変更がすべてロールバックされます。

name パラメーターに値が指定されている場合、このメソッドは、指定された名前のセーブポイント以降に実行されたすべての SQL 操作をロールバックします。指定されたセーブポイントよりも新しいセーブポイントが他に作成されている場合、これらのセーブポイント以降に実行された操作もロールバックされます。

セーブポイントが解放またはロールバックされると、該当するセーブポイントとそれ以降に設定されたセーブポイントは削除されます。releaseSavepoint() またはrollbackToSavepoint() を呼び出してセーブポイントを削除した後に、コードから SQL 操作を実行すると、追加された操作は、残っている直近のセーブポイントに属します(つまり、これらの操作は、削除されたセーブポイントよりも前に作成された直近のセーブポイントに属します)。セーブポイントが残っていない場合、操作はメイントランザクションに属します。

setSavepoint()releaseSavepoint()rollbackToSavepointflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
rollback begin() メソッドを使用して作成された既存のトランザクションをロールバックします。つまり、そのトランザクションの SQL ステートメントによる変更が、すべて破棄されます。SQLConnection インスタンスがデータベースに接続されていない(connected プロパティが false)の状態でメソッドを呼び出した場合、または現在開いているトランザクションが存在しない場合(inTransaction プロパティが false の場合)。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorresponderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると rollback イベントまたは error イベントが送出されます。 begin() メソッドを使用して作成された既存のトランザクションをロールバックします。つまり、そのトランザクションの SQL ステートメントによる変更が、すべて破棄されます。

中間セーブポイントをトランザクション内で設定するには、setSavepoint() メソッドを呼び出します。セーブポイントを使用すると、releaseSavepoint() メソッドまたは rollbackToSavepoint() を呼び出すことにより、トランザクションの一部をコミットまたはロールバックできます。ただし、rollback() メソッドを呼び出すと、トランザクションがロールバックされる前に個々のセーブポイントが解放(コミット)されているかどうかに関わらず、トランザクション内のすべての変更が完全に破棄されます。

begin()commit()setSavepoint()releaseSavepoint()rollbackToSavepoint()rollbackflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
setSavepoint データベーストランザクション内でブックマークのように機能するセーブポイントを作成します。name パラメーター値が空の文字列("")の場合。 ArgumentErrorArgumentErrorSQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)でメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrornameStringnullセーブポイントの名前を示す文字列です。このパラメーターに値が指定されていない、または null(デフォルト値)の場合は、releaseSavepoint() または rollbackToSavepoint() を次回に呼び出すときに name パラメーターを指定しないと、名前のないセーブポイント以降に実行された SQL 操作がコミットまたはロールバックされます。

前のセーブポイントと同じ名前を指定した場合、SQLConnection.releaseSavepoint() または SQLConnection.rollbackToSavepoint() を次回に呼び出したときに、この名前の付いた直近のセーブポイント以降に行われた変更がコミットまたはロールバックされます。

name 値には、空の文字列("")を使用できません。

responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定する応答オブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると setSavepoint イベントまたは error イベントが送出されます。
データベーストランザクション内でブックマークのように機能するセーブポイントを作成します。トランザクション内のポイントを示すセーブポイントです。releaseSavepoint()rollbackToSavepoint() メソッドを使用すると、セーブポイント間で実行された一連の SQL 操作を他の操作とは別にコミットまたはロールバックできます。この方法では、セーブポイントを使用することによって、一連の SQL 操作をネストしたトランザクションとして扱えます。

setSavepoint() メソッドの呼び出し時に、begin() メソッドを呼び出してトランザクションをまだ開いていない場合は、このメソッドを呼び出すことによってトランザクションが開始され、その際にセーブポイントが作成されます。トランザクションが既に開いている場合は、setSavepoint() を呼び出すと、トランザクション内にセーブポイントが作成されます。

変更を永続的にデータベースに保存するには、トランザクション全体がコミットされる必要があります。begin() メソッドを使用してトランザクションを開始した場合、トランザクション全体をコミットするには、commit() メソッドを呼び出す必要があります。inTransactionfalse の状態で、setSavepoint() を呼び出してトランザクションを開始した場合、トランザクション全体を終了するには、commit() メソッドを呼び出します。または、トランザクションを開始したセーブポイントを対象として、releaseSavepoint() または rollbackToSavepoint() を呼び出すと、トランザクションは自動的に終了します。

セーブポイント名を指定するには、name パラメーターに値を設定します。これにより、指定のセーブポイント以降に行われたすべての変更をロールバックまたはコミットできます。名前が指定されていない場合(デフォルト)は、名前のないセーブポイントが作成されます。

セーブポイントが解放またはロールバックされると、該当するセーブポイントとそれ以降に設定されたセーブポイントは削除されます。releaseSavepoint() またはrollbackToSavepoint() を呼び出してセーブポイントを削除した後に、コードから SQL 操作を実行すると、追加された操作は、残っている直近のセーブポイントに属します(つまり、これらの操作は、削除されたセーブポイントよりも前に作成された直近のセーブポイントに属します)。セーブポイントが残っていない場合、操作はメイントランザクションに属します。

begin()releaseSavepoint()rollbackToSavepoint()commit()rollback()setSavepointflash.events:SQLEvent処理が正しく完了したときに送出されます。 処理が正しく完了したときに送出されます。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
autoCompact 現在のデータベースが最初に作成されたときに、自動縮小が有効になっていたかどうかを示します(autoCompact パラメーターに指定されていた値で、データベースを作成した open() または openAsync() の呼び出しで指定したものです)。Boolean 現在のデータベースが最初に作成されたときに、自動縮小が有効になっていたかどうかを示します(autoCompact パラメーターに指定されていた値で、データベースを作成した open() または openAsync() の呼び出しで指定したものです)。このプロパティが true の場合、各書き込み処理の後に、未使用領域がデータベースファイルから自動的に削除され、データベースファイルのサイズが小さく保たれます。このプロパティが false の場合、削除されたデータが占有していた領域はデータベースファイルに残り、必要に応じて再使用されます。autoCompact が false であっても、compact() メソッドを呼び出すことでデータベースに強制的に未使用領域を再要求させることができます。

connected プロパティが false の場合、このプロパティは false に設定されます。

open()openAsync()
cacheSize この接続に対するキャッシュサイズへのアクセスを提供します。これは、一度にメモリに確保される最大のデータベースディスクページ数を表します。uintSQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)で、このプロパティを設定しようとした場合、またはトランザクションが現在開いている場合(inTransaction プロパティが true の場合)。 IllegalOperationErrorflash.errors:IllegalOperationError この接続に対するキャッシュサイズへのアクセスを提供します。これは、一度にメモリに確保される最大のデータベースディスクページ数を表します。各ページは、約 1.5 KB のメモリを使用します。この使用量は、pageSize パラメーター(データベースを作成した open() または openAsync() メソッド呼び出しで指定)で指定されている値によって異なります。デフォルトのキャッシュサイズは 2000 です。データベースの行を大量に変更する UPDATE 操作または DELETE 操作をアプリケーションで実行する場合は、キャッシュサイズを増やすことで処理速度が向上する場合があります。ただし、より多くのメモリが消費されます。 open()openAsync()columnNameStyle SELECT ステートメントの結果で、列名をどのように報告するかを示します。StringSQLConnection インスタンスがデータベースに接続されていない状態(connected プロパティが false の状態)で、このプロパティを設定しようとした場合。 IllegalOperationErrorflash.errors:IllegalOperationError SELECT ステートメントの結果で、列名をどのように報告するかを示します。

SQLColumnNameStyle クラスで定義されている定数は、このプロパティに対して有効な値を表します。

  • SQLColumnNameStyle.LONG は、列名が [table-name]_[column-name] の形式で返されることを示します。
  • SQLColumnNameStyle.SHORT は、列名が [column-name] の形式に指定されていることを示します。同じ名前を持つ複数の列が存在する場合、その名前を持つプロパティが 1 つだけが結果オブジェクトに追加されます。
  • SQLColumnNameStyle.DEFAULT はデフォルト値です。この値が使用されている場合、結果の列名は、同じ列名を持つ SELECT ステートメントのテーブル数に従って形式が設定されます。SELECT ステートメントにテーブルが 1 つしか含まれない場合は、[column-name] という短い名前の形式が使用されます。また、SELECT ステートメントに複数のテーブルが結合して含まれ、同じ列名の存在により名前の競合が発生している場合は、それぞれの名前を識別できるように [table-name]_[column-name] という長い名前の形式が使用されます。
flash.data.SQLColumnNameStyle
connected SQLConnection インスタンスに、データベースファイルへの開いている接続があるかどうかを示します。Boolean SQLConnection インスタンスに、データベースファイルへの開いている接続があるかどうかを示します。 open()openAsync()close()inTransaction この接続が、現在トランザクションに含まれているかどうかを示します。Boolean この接続が、現在トランザクションに含まれているかどうかを示します。 begin()commit()rollback()lastInsertRowID SQL INSERT ステートメントによって最後に作成された行識別子です。Number SQL INSERT ステートメントによって最後に作成された行識別子です。行識別子は、データベース内のテーブルの行を一意に識別するために使用されます。この値は、データベースによって頻繁に生成されます。

データベースが接続されていない場合、または INSERT ステートメントが実行されていない場合、値はゼロになります。

単一の SQL INSERT ステートメントを実行した場合、挿入された行の行識別子は、lastInsertRowID プロパティ(SQLStatement オブジェクトの getResult() メソッドから返される SQLResult オブジェクトのプロパティ)を通じて取得できます(SQLStatement の result イベントが送出された後に getResult() メソッドが呼び出された場合)。

主キーと生成される行識別子の詳細については、付録「ローカルデータベースでの SQL サポート」の「CREATE TABLE」セクションおよび「」セクションを参照してください。

flash.data.SQLResult.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
pageSize 現在のデータベースが最初に作成されたときに指定された、データベースのページサイズ(バイト単位)を示します(データベースを作成した open() または openAsync() の呼び出しで pageSize パラメーターに指定されていた値)。uint 現在のデータベースが最初に作成されたときに指定された、データベースのページサイズ(バイト単位)を示します(pageSize パラメーターに指定されていた値で、データベースを作成した open() または openAsync() の呼び出しで指定します)。

connected プロパティが false の場合、このプロパティの値は 0 になります。

データベースのページサイズは、open() メソッドまたは openAsync() メソッドを使用すると、データベースに最初のテーブルが作成される前までは変更できます。

open()openAsync()
totalChanges データベースへの接続が開かれてからデータに加えられた変更数の合計が含まれます。Number データベースへの接続が開かれてからデータに加えられた変更数の合計が含まれます。INSERTDELETE および UPDATE の各ステートメントによって加えられた変更の追跡に加え、この値にはトリガーによる変更も含まれます。

データベース接続が閉じられると、この値は 0 にリセットされます。SQLConnection インスタンスがデータベースに接続していない場合、値は 0 になります。

flash.data.SQLResult.rowsAffected
SQLTriggerSchema SQLTriggerSchema インスタンスは、データベースの特定のトリガーを示す情報を提供します。flash.data:SQLSchema SQLTriggerSchema インスタンスは、データベースの特定のトリガーを示す情報を提供します。このインスタンスには、トリガーの名前(name プロパティ)、関連付けられたテーブルの名前(table プロパティ)およびトリガーの作成に使用された SQL ステートメント (sql プロパティ)が含まれます。

データベースのトリガースキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを使用してスキーマ情報をロードします。このとき、null または SQLTriggerSchematype 引数の値に使用します。結果として得られた SQLSchemaResult インスタンスの triggers プロパティには、データベース内のトリガーを示す SQLTriggerSchema インスタンスの配列が含まれます。

一般に、SQLTriggerSchema インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()SQLTriggerSchema SQLTriggerSchema インスタンスを作成します。databaseString関連付けられたデータベースの名前です。 nameStringトリガーの名前です。 sqlStringトリガーの作成に使用された SQL です。 tableStringトリガーの関連付けられたテーブルの名前です。 SQLTriggerSchema インスタンスを作成します。一般に、SQLTriggerSchema コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。 table このトリガーが定義されているテーブルの名前、またはビューの名前(トリガーがビューで定義されている場合)です。String このトリガーが定義されているテーブルの名前、またはビューの名前(トリガーがビューで定義されている場合)です。
SQLStatement SQLStatement インスタンスは、SQLConnection インスタンスを通して開かれているローカル SQL データベースに対して SQL ステートメントを実行するために使用します。flash.events:EventDispatcher SQLStatement インスタンスは、SQLConnection インスタンスを通して開かれているローカル SQL データベースに対して SQL ステートメントを実行するために使用します。

SQLStatement インスタンスは、SQLConnection インスタンスを SQLStatement インスタンスの sqlConnection プロパティの値として設定することで、SQLConnection インスタンスにリンクされます。text プロパティには、実行する SQL ステートメントの実際のテキストが設定されます。必要に応じて、parameters プロパティを使用して SQL ステートメントのパラメーター値を指定し、execute() メソッドを呼び出してステートメントを実行します。

ローカル SQL データベースでサポートされている SQL ダイアレクトの詳細な説明については、付録「ローカルデータベースでの SQL サポート」を参照してください。

非同期実行モードでは、execute() メソッドと next() メソッドがバックグラウンドで実行され、処理が完了または失敗すると、登録済みのイベントリスナーまたは指定の Responder インスタンスに対してランタイムがイベントを送出します。同期モードでは、メソッドはメインアプリケーションスレッドで実行され、データベースの処理が完了するまで、他のコードは実行されません。また、同期モードでメソッドが失敗すると、ランタイムは error イベントを送出せずに例外をスローします。

flash.data.SQLConnectionerror 処理中にエラーが発生した場合に送出されます。flash.events.SQLErrorEvent.ERRORflash.events.SQLErrorEvent 処理中にエラーが発生した場合に送出されます。 execute()next()result execute() メソッドまたは next() メソッド呼び出しの処理が正常に完了したときに送出されます。flash.events.SQLEvent.RESULTflash.events.SQLEvent execute() メソッドまたは next() メソッド呼び出しの処理が正常に完了したときに送出されます。result イベントが送出されたら、getResult() メソッドを呼び出してステートメントの結果を取得できます。 execute()next()getResult()SQLStatement SQLStatement インスタンスを作成します。メインアプリケーションサンドボックスの外部にあるサンドボックスからコンストラクターが呼び出された場合。 SecurityErrorSecurityError SQLStatement インスタンスを作成します。 cancel このステートメントの実行をキャンセルします。 このステートメントの実行をキャンセルします。SQLConnection.cancel() と同様、このメソッドは、長時間実行されているクエリを停止する場合や、完了していないクエリをキャンセルする場合に使用します。ただし、SQLConnection.cancel() とは異なり、このメソッドは単一のステートメントだけをキャンセルします。ステートメントが現在実行中でない場合は、このメソッドを呼び出しても何も実行されません。

cancel() 操作の完了に直接応答する形でイベントが送出されることはありません。ただし、cancel() 操作が完了してステートメントの実行がキャンセルされると、SQLStatement インスタンスは error イベントを送出し、ステートメントの実行(execute() または next() の呼び出し)が完了しなかったことを示します。または、responder パラメーター(execute() または next() 呼び出しのパラメーター)に値が指定されている場合は、指定されたフォルトハンドラーメソッドが呼び出されます。 いずれの場合も、リスナーに渡される SQLError インスタンスの errorID プロパティには、3118(処理の中止)という値が設定されます。

clearParameters 現在のパラメーター設定をすべてクリアします。 現在のパラメーター設定をすべてクリアします。 パラメーターexecute sqlConnection プロパティの SQLConnection オブジェクトに接続されているデータベースに対して、text プロパティの SQL を実行します。text プロパティが null または空のストリング("")の場合、sqlConnection プロパティが設定されていない場合、sqlConnection プロパティに割り当てられている SQLConnection インスタンスが接続されていない場合、またはステートメントが現在実行中の場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorprefetchint-1ステートメントの text プロパティが SELECT ステートメントの場合、この値は、ステートメントから一度に返される行数を示します。デフォルト値は -1 で、すべての結果行が一度に返されることを示します。このパラメーターは next() メソッドと組み合わせて使用し、大きな結果セットを小さなデータのセットに分割します。これにより、最初の結果が迅速に返され、結果処理操作が分割されるので、ユーザーが体感するアプリケーションのパフォーマンスが向上します。

SQL ステートメントが SELECT クエリで、prefetch 引数に 0 より大きい値が指定されている場合、結果セット全体が返されるまで、または SQLStatement.cancel() メソッドまたは SQLConnection.cancel() メソッドが呼び出されるまで、ステートメントが実行されるものと見なされます。実行時は結果セットの行数が不明なので、ステートメントが完了したと見なされる前は、データベースカーソルが結果セットの最終行を越えて移動することに注意してください。prefetch 引数が execute() 呼び出しで指定されている場合、結果セットの行数の合計よりも 1 行以上多く要求(結果セットの行数よりも大きい prefetch 値の指定、または後続の next() メソッドの呼び出しによって要求)されていないと、結果として得られる SQLResult インスタンスの complete プロパティは true になりません。

responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。非同期実行モードでは、responder 引数が null の場合、実行が完了すると result イベントまたは error イベントが送出されます。
text プロパティの SQL を、sqlConnection プロパティの SQLConnection オブジェクトに接続されているデータベースに対して実行します。

responder 引数が null 以外の場合は、指定された Responder オブジェクトによって、操作の結果を処理するために呼び出されるメソッドが指定されます。responder 引数が null の場合は、非同期実行モードで操作が正常に完了すると result イベントが送出され、操作が失敗すると error イベントが送出されます。

ステートメントの結果(SELECT ステートメントの結果行や INSERT ステートメントでデータベースが生成したプライマリキーなど)にアクセスするには、getResult() メソッドを呼び出します。同期モードでは、ステートメントの実行直後に、非同期モードでは、result イベントの送出時に、結果を確認できます。

すべてのステートメントは、準備(コンパイル)しなければ実行できません。ステートメントは、SQLStatement インスタンスの execute() メソッドの初回呼び出し時に、ランタイムによって準備されます。ステートメントが準備されたら、text プロパティが変更されない限り、再度準備する必要はありません。パラメーター値を設定する場合は、ステートメントを再度準備する必要はありません。

次の例は、SQLStatement の実行を示したものです。この例では、イベントリスナーを使用して、ステートメントの実行の完了または失敗を特定します。 var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } } } function errorHandler(event:SQLErrorEvent):void { trace("An error occured while executing the statement."); } 次の例は、SQLStatement の実行を示したものです。この例では、Responder オブジェクトを使用して、ステートメントの実行が完了または失敗したときに呼び出す関数を示します。 var conn:SQLConnection; var dbStatement:SQLStatement; var employeeResponder:Responder; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { employeeResponder = new Responder(resultHandler, errorHandler); dbStatement.execute(-1, employeeResponder); } function resultHandler(result:SQLResult):void { if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } } } function errorHandler(error:SQLError):void { trace("An error occured while executing the statement."); }
next()getResult()resultflash.events:SQLEventステートメントの実行が正常に完了した場合、または prefetch 引数の値が指定され、SELECT ステートメントが 1 つ以上のデータの行を返した場合に送出されます。 ステートメントの実行が正常に完了した場合、または prefetch 引数の値が指定され、SELECT ステートメントが 1 つ以上のデータの行を返した場合。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
getResult ステートメントの実行結果を含む SQLResult オブジェクトへのアクセスを提供します。この結果には、SELECT ステートメントの結果行と、実行されたすべてのステートメントのステートメント実行に関するその他の情報が含まれます。SQLResult オブジェクトには、execute() メソッドまたは next() メソッドを呼び出した結果が含まれます。 flash.data:SQLResult ステートメントの実行結果を含む SQLResult オブジェクトへのアクセスを提供します。この結果には、SELECT ステートメントの結果行と、実行されたすべてのステートメントのステートメント実行に関するその他の情報が含まれます。非同期モードでは、result イベントが送出されるまで、結果情報を取得できません。

SELECT ステートメントを、execute() メソッドがデフォルトの prefetch 引数(-1)を指定して呼び出されている場合に実行すると、返される SQLResult オブジェクトにはクエリの結果セット全体が含まれます。

prefetch 引数が、execute() メソッドまたは next() メソッドの呼び出しで指定されている場合、getResult() メソッドは結果の先入れ先出しキューとして動作します。result イベントが送出されるたびに、新しい SQLResult オブジェクトがキューに追加されます。getResult() メソッドが呼び出されるたびに、最も古い SQLResult オブジェクト(最初にキューに追加されたもの)が返され、キューから削除されます。キューに存在する SQLResult オブジェクトがなくなると、getResult()null を返します。

getResult() を呼び出して削除されない限り、SQLResult オブジェクトはキューに残ることに注意してください。例えば、execute() メソッドを、getResult() を呼び出さずに繰り返し呼び出すと、各 execute() 呼び出しに関連付けられている SQLResult オブジェクトは、そのままキューに残ります。

execute()next()result イベント[result いべんと]
next SELECT ステートメントの結果セットの次の部分を取得します。ステートメントが現在実行されていない状態(executing プロパティが false)でメソッドが呼び出された場合。 IllegalOperationErrorflash.errors:IllegalOperationError同期実行モードで処理が失敗した場合。 SQLErrorflash.errors:SQLErrorprefetchint-1ステートメントの text プロパティが SELECT ステートメントの場合、この値は、ステートメントから一度に返される行数を示します。デフォルト値は -1 で、すべての結果行が一度に返されることを示します。これにより、最初の結果が迅速に返され、結果処理操作が分割されるので、ユーザーが体感するアプリケーションのパフォーマンスが向上します。 responderflash.net:Respondernull処理が成功または失敗した場合に呼び出されるメソッドを指定するオブジェクトです。responder 引数が null の場合、実行が完了すると result イベントまたは error イベントが送出されます。 SELECT ステートメントの結果セットの次の部分を取得します。結果セットにこれ以上行がない場合、result イベントは送出されますが、SQLResult オブジェクトが新たに getResult() キューに追加されることはありません。

非同期実行モードでは、responder 引数が null でない場合、操作の結果を処理するために呼び出されるメソッドは指定された Responder によって示されます。responder 引数が null の場合は、操作が正しく完了すると result イベントが送出され、操作が失敗すると error イベントが送出されます。

このメソッドは、ステートメントが実行中の場合にのみ呼び出せます。ステートメントが SELECT クエリで、prefetch 引数に 0 より大きい値が指定されている場合、結果セット全体が返されるまで、または SQLStatement.cancel() メソッドまたは SQLConnection.cancel() メソッドが呼び出されるまで、ステートメントが実行されるものと見なされます。

次の例は、SQLStatement の実行例を示したものです。この例では、結果を最初に返すときに、結果セットの最初の 10 行だけを返すように明示的に示しています。このコードでは SQLResult の complete プロパティをチェックし、取得されていない行がある場合は、next() メソッドを呼び出します。 var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler); dbStatement.execute(10); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { var row:Object = result.data[i]; trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn); } if (!result.complete) { dbStatement.next(10); } } } function errorHandler(event:SQLErrorEvent):void { trace("An error occured while executing the statement."); }
execute()resultflash.events:SQLEventステートメントの実行が正常に完了した場合、または prefetch 引数の値が指定され、next() 呼び出しが 1 つ以上のデータの行を返した場合に送出されます。 ステートメントの実行が正常に完了した場合、または prefetch 引数の値が指定され、next() 呼び出しが 1 つ以上のデータの行を返した場合。errorflash.events:SQLErrorEvent非同期実行モードで処理が失敗した場合に送出されます。 非同期実行モードで処理が失敗した場合に送出されます。
executing ステートメントが現在実行中かどうかを示します。Boolean ステートメントが現在実行中かどうかを示します。

execute() が呼び出され、データベースから返されていない結果がある場合、このプロパティは true になります。

execute()
itemClass ステートメントの実行結果として返された各行で使用されているクラス(データ型)を示します。Class ステートメントの実行結果として返された各行で使用されているクラス(データ型)を示します。

デフォルトでは、SELECT ステートメントから返される各行は Object インスタンスとして作成されます。このインスタンスでは、結果セットの列名がオブジェクトのプロパティの名前として使用され、各列の値が、それぞれに関連付けられているプロパティの値として使用されます。

itemClass プロパティでクラスを指定すると、この SQLStatement インスタンスで実行されている SELECT ステートメントから返される各行は、指定されたクラスのインスタンスとして作成されます。itemClass インスタンスの各プロパティには、そのプロパティと同じ名前を持つ列の値が割り当てられます。

このプロパティに割り当てるクラスは、パラメーターを必要としないコンストラクターを持っていなければなりません。また、このクラスは、SELECT ステートメントから返される各列に対応する、個別のプロパティを持っていなければなりません。SELECT リストの列と一致するプロパティ名が itemClass クラスにない場合は、エラーと見なされます。

次のコードは、itemClass プロパティを使用し、ランタイムに SQL SELECT ステートメントの結果からカスタムクラスのインスタンスを作成させる方法を示したものです。 // Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
flash.data.SQLResult.data
parameters SQL ステートメントの text プロパティで指定されたパラメーターの値を追加する結合配列として機能します。Object SQL ステートメントの text プロパティで指定されたパラメーターの値を追加する結合配列として機能します。 配列のキーは、パラメーターの名前です。 名前が付いていないパラメーターがステートメントのテキストで指定されている場合は、パラメーターのインデックスがキーになります。

SQL ステートメントのテキストでは、パラメーターは「?」、「:」または「@」のいずれかの文字で示されます。

「:」および「@」トークンは、名前の付いているパラメーターを示し、トークンに続く文字がパラメーターの名前として解釈されます。

例えば、次の SQL ステートメントでは、firstName という名前のパラメーターを「:」文字で指定しています。

SELECT FROM employees WHERE firstName = :firstName

「?」トークンは、インデックス付けされた(番号が付けられた)パラメーターを示します。各パラメーターには、ステートメントのテキストの順序に従って、自動的にインデックスが与えられます。パラメーターのインデックス値は 0 から始まります。つまり、最初のパラメーターのインデックスは 0 になります。

パラメーターは、SQL ステートメントの構築時に不明な値を、型指定して置き換える手段として使用されます。 データベースに渡される値の記憶クラスを保証するには、パラメーターを使用する以外に方法はありません。 パラメーターが使用されていない場合、関連付けられている列の型の類似性に基づいて、すべての値がテキスト表現から記憶クラスに変換されます。記憶クラスと列の類似性について詳しくは、「データタイプサポート」のセクション(付録「ローカルデータベースでの SQL サポート」にあります)を参照してください。

パラメーターは、SQL インジェクションアタックと呼ばれる悪質な手法を防ぐセキュリティ手段としても使用されます。SQL インジェクションアタックでは、ユーザーがアクセス可能な場所(データ入力フィールドなど)に SQL コードを入力します。アプリケーションコードが、ユーザーの入力を SQL テキストと直接連結して SQL ステートメントを構築すると、ユーザーが入力した SQL コードがデータベースに対して実行されてしまいます。次のコードは、ユーザーの入力を SQL テキストに連結する例を示したものです。この手法は使用しないでください

// assume the variables "username" and "password" // contain user-entered data var sql:String = "SELECT userId " + "FROM users " + "WHERE username = '" + username + "' " + " AND password = '" + password + "'"; var statement:SQLStatement = new SQLStatement(); statement.text = sql;

ユーザーが入力した値をステートメントのテキストに連結するのではなく、ステートメントのパラメーターを使用することで、SQL インジェクションアタックを防ぐことができます。これは、パラメーター値が明示的に置き換え値として扱われ、そのままステートメントのテキストの一部とはならないからです。上記のコードは、次のように書き換えることが推奨されます。

// assume the variables "username" and "password" // contain user-entered data var sql:String = "SELECT userId " + "FROM users " + "WHERE username = :username " + " AND password = :password"; var statement:SQLStatement = new SQLStatement(); statement.text = sql; // set parameter values statement.parameters[":username"] = username; statement.parameters[":password"] = password;

すべてのパラメーター値は、ステートメントを実行する前に設定する必要があります。 parameters 配列で指定されたパラメーター値は、execute() メソッドが呼び出されるとバインドされます(ステートメントのテキストと結合されます)。 execute() が呼び出されると、その後で値に加えられた変更は、実行中のステートメントには適用されません。ただし、その後で execute() を呼び出した場合は、変更された値が使用されます。ステートメントのテキストに、parameters プロパティで指定された値が設定されていないパラメーターが含まれている場合は、エラーが発生します。

parameters プロパティからすべてのパラメーター値をクリアするには、clearParameters() メソッドを使用します。

次の例は、:firstName という名前を付けられたパラメーターを SQL ステートメントで使用した例を示したものです。 // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = :firstName"; employees.parameters[":firstName"] = "Sam"; employees.execute(); 次の例は、名前が付けられていないパラメーターを SQL ステートメントで使用する例を示したものです。 // employees is a SQLStatement instance employees.text = "SELECT FROM employees WHERE first = ?"; employees.parameters[0] = "Sam"; employees.execute();
textclearParameters()
sqlConnection ステートメントの実行対象となっているデータベースへの接続を管理する SQLConnection オブジェクトです。flash.data:SQLConnectionステートメントの実行中に、このプロパティの値を変更しようとした場合。 IllegalOperationErrorflash.errors:IllegalOperationError ステートメントの実行対象となっているデータベースへの接続を管理する SQLConnection オブジェクトです。 text ステートメントの実際の SQL テキストです。Stringステートメントの実行中に、text プロパティの値を変更しようとした場合。 IllegalOperationErrorflash.errors:IllegalOperationError ステートメントの実際の SQL テキストです。

テキストは、サポートされている任意の SQL にすることができます。ローカル SQL データベースでサポートされている SQL ダイアレクトの詳細な説明については、付録「ローカルデータベースでの SQL サポート」を参照してください。

SQLMode このクラスには、SQLConnection.open() メソッドおよび SQLConnection.openAsync() メソッドの openMode パラメーターで有効な値を表す定数が含まれます。Object このクラスには、openMode パラメーター(SQLConnection.open() メソッドおよび SQLConnection.openAsync() メソッドのパラメーター)の有効な値を表す定数が含まれます。 flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()CREATE 接続を更新用に開くことと、指定のファイルが存在しない場合にはデータベースファイルを作成することを示します。createString 接続を更新用に開くことと、指定のファイルが存在しない場合にはデータベースファイルを作成することを示します。このモードでは、データベースに対する読み取りおよび書き込み処理が許可されています。データベースが存在しない場合は、処理の完了前に作成されます。 flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()READ 読み取り専用モードで接続を開くことを示します。readString 読み取り専用モードで接続を開くことを示します。このモードでは、データベースへの書き込みは許可されません。データベースが存在しない場合、開く処理は失敗します。 flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()UPDATE 接続を更新用に開くことと、指定のファイルが存在しない場合には新しいデータベースファイルを作成しないことを示します。updateString 接続を更新用に開くことと、指定のファイルが存在しない場合には新しいデータベースファイルを作成しないことを示します。このモードでは、データベースに対する読み取りおよび書き込み処理が許可されています。データベースが存在しない場合、開く処理は失敗します。 flash.data.SQLConnection.open()flash.data.SQLConnection.openAsync()EncryptedLocalStore EncryptedLocalStore クラスは、暗号化された永続的なデータストレージメカニズムを提供します。Object EncryptedLocalStore クラスは、暗号化された永続的なデータストレージメカニズムを提供します。

AIR プロファイルのサポート:この機能はすべてのデスクトップオペレーティングシステムでサポートされますが、モバイルデバイスまたはテレビ用 AIR デバイスではサポートされません。EncryptedLocalStore.isSupported プロパティを使用して、サポートされているかどうかを実行時にテストすることができます。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。

AIR は、ユーザーのコンピューターにインストールされた各 AIR アプリケーションに対して、暗号化されたローカルストア(ELS)を提供します。これにより、他のユーザーによって簡単に解読されないように暗号化された形式で、ユーザーのローカルハードディスクに格納されたデータを保存および取得できるようになります。各 AIR アプリケーションで個別の暗号化されたローカルストアが使用され、各 AIR アプリケーションは、コンピューター上の各ユーザーアカウントに対して個別の暗号化されたローカルストアを使用します。

Web サービスに対するログイン資格情報など、セキュリティで保護する必要がある情報を格納するために暗号化されたローカルストアを使用します。他のユーザーに対して非公開にする必要がある情報を保存するには、ELS が適切です。ただし、ELS では同じユーザーアカウントで実行される他のプロセスからデータを保護することはできません。このため、DRM や暗号化キーなどの機密アプリケーションデータを保護するには適切でありません。

AIR では、Windows は DPAPI、Macintosh は KeyChain、Linux は KeyRing または KWallet を使用して、暗号化されたローカルストアを各アプリケーションおよびユーザーに関連付けます。暗号化されたローカルストアでは、128 ビットの AES-CBC 暗号化を使用します。

暗号化されたローカルストアの情報は、application セキュリティサンドボックス内の AIR アプリケーションコンテンツでのみ使用できます。

AIR アプリケーションを更新すると、更新されたバージョンには暗号化されたローカルストアの既存のデータへのアクセス権が保持されます。ただし、次の場合を除きます。

  • stronglyBound パラメーターを true に設定してアイテムが追加された場合。
  • 既存バージョンと更新バージョンが両方とも AIR 1.5.3 以前にパブリッシュされていて、更新が移行署名で署名されている場合。

暗号化されたローカルストアの制限事項

暗号化されたローカルストアのデータは、ユーザーのオペレーティングシステムアカウントの資格情報で保護されています。他のエンティティは、そのユーザーとしてログインできる場合を除き、ストア内のデータにアクセスできません。ただし、認証されたユーザーによって実行される他のアプリケーションからのアクセスに対しては、データのセキュリティは保護されません。このため、ライセンスに使用されるキーやデジタル権限管理など、ユーザーに公開したくないアプリケーションのデータがセキュリティ保護されません。ELS は、このような情報を保存するために適切な場所ではありません。ELS は、パスワードなどのユーザーのプライベートデータを保存する目的にのみ適しています。

ELS 内のデータは、さまざまな理由で失われる場合があります。例えば、ユーザーがアプリケーションをアンインストールしたり、暗号化されたデータを削除したりする場合があります。また、更新の結果、発行者 ID が変更される場合があります。こうした理由により、ELS は永続的なデータストレージではなく、プライベートキャッシュとして扱う必要があります。

stronglyBound パラメーターはサポートされなくなったため、true に設定しないでください。このパラメーターを true に設定しても、追加のデータ保護は提供されません。同時に、発行者 ID が同じでもアプリケーションが更新されるとデータへのアクセスが失われます。

保存されるデータが 10 MB を超える場合、暗号化されたローカルストアの実行が低速化する場合があります。

AIR アプリケーションをアンインストールする場合、アンインストーラーは暗号化されたローカルストアに保存されたデータを削除しません。

ELS を使用するためのベストプラクティスには次のようなものがあります。

  • パスワードなどのユーザーの機密データを保存する目的で ELS を使用します(stronglyBoundfalse に設定)。
  • DRM キーやライセンスのトークンなどのアプリケーションの機密情報を保存する目的では ELS を使用しないでください。
  • ELS データが失われた場合に、ELS に保存されたデータをアプリケーションで作成し直す方法を提供します。例えば、必要に応じて、ユーザーにアカウント資格情報の再入力を求めます。
  • stronglyBound パラメーターは使用しないでください。
  • stronglyBoundtrue に設定する場合は、更新中に保存されたアイテムを移行しないでください。代わりに、更新後にデータを再作成します。
  • 比較的少量のデータのみ保存します。大量のデータの場合は、AIR SQL データベースを暗号化して使用します。

暗号化されたローカルストアのアイテムは、ストリングで識別されます。アイテムは、すべてバイト配列データとして保存されます。

暗号化されたローカルストアのデータは、ユーザーのアプリケーションデータディレクトリのサブディレクトリに置かれます。このサブディレクトリのパスは Adobe/AIR/ELS/ の後ろにアプリケーション ID が続きます。

次のコードは、暗号化されたローカルストアにストリングを保存して、そのストリングを取得し、削除します。 var str:String = "Bob"; var bytes:ByteArray = new ByteArray(); bytes.writeUTFBytes(str); EncryptedLocalStore.setItem("firstName", bytes); var storedValue:ByteArray = EncryptedLocalStore.getItem("firstName"); trace(storedValue.readUTFBytes(storedValue.length)); // "Bob" EncryptedLocalStore.removeItem("firstName");
getItem 指定された名前に対応するデータ。name 値は、null または空の文字列です。 ArgumentErrorArgumentErrorByteArray データです。指定された名前に対するデータが存在しない場合、メソッドは null を返します。 flash.utils:ByteArraynameString暗号化されたローカルストアのアイテムの名前です。 指定された名前に対応するデータ。

指定された名前でアイテムが見つからない場合、このメソッドは null を返します。

removeItem 暗号化されたローカルストアから、指定された名前のアイテムを削除します。name 値は、null または空の文字列です。 ArgumentErrorArgumentErrornameString暗号化されたローカルストアのアイテムの名前です。 暗号化されたローカルストアから、指定された名前のアイテムを削除します。 reset すべてのデータを削除して、暗号化されたローカルストア全体をクリアします。 すべてのデータを削除して、暗号化されたローカルストア全体をクリアします。 setItem ByteArray オブジェクトを指定された名前で保存します。name 値は、null または空の文字列です。 ArgumentErrorArgumentErrornameString暗号化されたローカルストアのアイテムの名前です。 dataflash.utils:ByteArrayデータです。 stronglyBoundBooleanfalse(非推奨)stronglyBound パラメーターを false(デフォルト値)に設定します。true に設定すると、アプリケーションファイルが変更された場合に、保存されたアイテムを取得できません。例えば、ユーザーがアプリケーションの更新をインストールすると、更新されたアプリケーションは、暗号化されたローカルストアに以前に書き込まれた、強力にバインドされたデータを読み取れなくなります。 ByteArray オブジェクトを指定された名前で保存します。 isSupported 現在のプラットフォームで EncryptedLocalStore クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。Boolean暗号化されたローカルストアをクライアントシステムで使用できるかどうかをレポートします。 現在のプラットフォームで EncryptedLocalStore クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。
SQLIndexSchema SQLIndexSchema インスタンスは、データベースの特定のインデックスを示す情報を提供します。flash.data:SQLSchema SQLIndexSchema インスタンスは、データベースの特定のインデックスを示す情報を提供します。使用できる情報には、関連付けられたテーブルの名前(table プロパティ)、インデックスの作成に使用した SQL ステートメント(sql プロパティ)およびインデックスの名前(name プロパティ)が含まれます。

データベースのインデックススキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを使用してスキーマ情報をロードします。このとき、null または SQLIndexSchematype 引数の値に使用します。結果として得られた SQLSchemaResult インスタンスの indices プロパティには、データベース内のインデックスを示す SQLIndexSchema インスタンスの配列が含まれます。

一般に、SQLIndexSchema インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()SQLIndexSchema SQLIndexSchema インスタンスを作成します。databaseString関連付けられたデータベースの名前です。 nameStringインデックスの名前です。 sqlStringこのインデックスの作成に使用された SQL ステートメントです。 tableStringこのインデックスが関連付けられるテーブルの名前です。 SQLIndexSchema インスタンスを作成します。一般に、SQLIndexSchema コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。 flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.indicestable このインデックスが関連付けられるテーブルの名前です。String このインデックスが関連付けられるテーブルの名前です。
SQLTableSchema SQLTableSchema インスタンスは、データベースの特定のテーブルを示す情報を提供します。flash.data:SQLSchema SQLTableSchema インスタンスは、データベースの特定のテーブルを示す情報を提供します。このインスタンスには、テーブルの名前(name プロパティ)、テーブルの作成に使用された SQL ステートメント(sql プロパティ)およびテーブルの列に関する情報(columns プロパティ)が含まれます。

データベースのテーブルスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを使用してスキーマ情報をロードします。このとき、null または SQLTableSchematype 引数の値に使用します。結果として得られた SQLSchemaResult インスタンスの tables プロパティには、データベース内のテーブルを表す SQLTableSchema インスタンスの配列が含まれます。

一般に、SQLTableSchema インスタンスは開発者のコードでは直接作成されません。

flash.data.SQLConnection.loadSchema()flash.data.SQLColumnSchemaSQLTableSchema SQLTableSchema インスタンスを作成します。databaseString関連付けられたデータベースの名前です。 nameStringテーブルの名前です。 sqlStringテーブルの作成に使用された SQL ステートメントです。 columnsArrayこのテーブルの列を示す SQLColumnSchema インスタンスの配列です。 SQLTableSchema インスタンスを作成します。一般に、SQLTableSchema コンストラクターは開発者のコードでは直接呼び出されません。データベースのスキーマ情報を取得するには、SQLConnection.loadSchema() メソッドを呼び出します。 flash.data.SQLConnection.getSchemaResult()flash.data.SQLSchemaResult.tablescolumns このテーブルの列のスキーマ情報を含む SQLColumnSchema インスタンスの配列です。Array このテーブルの列のスキーマ情報を含む SQLColumnSchema インスタンスの配列です。列情報を結果から除外するように SQlConnection.loadSchema() 呼び出しで示されている場合、columns プロパティは空の配列(length プロパティが 0 の配列)になります。 flash.data.SQLColumnSchemaflash.data.SQLConnection.loadSchema()
SQLResult SQLResult クラスは、SQL ステートメント(SQLStatement インスタンス)の実行に応答して返されたデータへのアクセスを提供します。Object SQLResult クラスは、SQL ステートメント(SQLStatement インスタンス)の実行に応答して返されたデータへのアクセスを提供します。

SQL ステートメントの SQLResult インスタンスには、SQLStatement.getResult() メソッドを呼び出してアクセスします。また、SQLStatement.execute() または SQLStatement.next() の呼び出しで指定された Responder インスタンスの結果ハンドラーに渡す引数としてアクセスすることもできます。一般に、SQLResult インスタンスは開発者のコードでは直接作成されません。

SQLResult オブジェクトは、SELECT ステートメントから返されるデータの行へのアクセス(data プロパティを使用)、INSERT ステートメントの行識別子情報の取得(lastInsertRowID プロパティを使用)、INSERTUPDATE または DELETE ステートメントの影響を受ける行数の特定(rowsAffected プロパティを使用)、または取得されていない SELECT の結果行が他にもあるかどうかの特定(complete プロパティを使用)のために使用します。

flash.data.SQLStatement.getResult()flash.data.SQLStatement.execute()flash.data.SQLStatement.next()SQLResult SQLResult インスタンスを作成します。dataArraynullステートメントの実行から返される行の配列です。ステートメントが行を返さない場合、この値は null になります。 rowsAffectedNumber0実行されたステートメントの影響を受ける行数を示します。 completeBooleantrue取得できる行が他にもあるか、すべてのデータが返されているかを示します。 rowIDNumber0ステートメントが SQL INSERT 操作の場合、行に対する新しい一意の識別子になります。 SQLResult インスタンスを作成します。一般に、SQLResult コンストラクターは開発者のコードでは直接呼び出されません。特定の SQLStatement インスタンスに関連付けられている SQLResult を取得するには、そのインスタンスの getResult() メソッドを呼び出します。execute() メソッドまたは next() メソッドの呼び出しで Responder インスタンスが指定されている場合、SQLResult インスタンスは、引数として結果ハンドラー関数にも渡されます。 complete ステートメント実行から結果データがすべて返されているかどうかを示します。Boolean ステートメント実行から結果データがすべて返されているかどうかを示します。

ステートメントが 1 つまたは複数の行を返す場合、このプロパティはすべての行が返されているかどうかを示します。SQLStatement オブジェクトの execute() メソッドが、prefetch 引数値を指定して呼び出されている場合、指定された行数の結果データだけが SQLResult オブジェクトの data プロパティに返されます。その後 SQLStatement.next() を呼び出すと、さらに別のデータを使用できるようになります。このプロパティは、最終的な結果が返された時期を特定するために使用します。

実行時は行数が不明なので、ステートメントが完了したと見なされる前は、データベースカーソルが最終行を越えて移動することに注意してください。SQLStatement.execute() ステートメントが、prefetch 引数を指定して呼び出されている場合、結果セットの合計行数よりも 1 行以上多く要求しないと、結果として得られる SQLResult インスタンスの complete プロパティは true になりません。

flash.data.SQLStatement.execute()flash.data.SQLStatement.next()
data ステートメント実行、具体的には SQL SELECT ステートメントが実行された場合に、結果として返されるデータです。Array ステートメント実行、具体的には SQL SELECT ステートメントが実行された場合に、結果として返されるデータです。

ステートメントが 1 つまたは複数の行を返す場合、このプロパティは、結果データの行を示すオブジェクトの配列になります。配列の各オブジェクトにはプロパティ名があり、このプロパティ名は、結果データセットの列名に対応します。

例えば、以下に示す SQL の SELECT ステートメントを実行するとします。

SELECT lastName, firstName FROM employees

例えば、employees テーブルに 10 行含まれている場合、SQLResult.data プロパティは、10 エレメントを持つ配列になります。各エレメントは、2 つのプロパティ(lastName および firstName)を持つオブジェクトです。

複雑な結果列(集計関数など)を含む SELECT ステートメントを使用する場合、状況はより複雑になります。例えば、以下の SQL を実行するとします。

SELECT departmentId, SUM(salary) FROM employees GROUP BY departmentId

このステートメントの結果では、data 配列の各オブジェクトは、departmentId および SUM(salary) という名前の 2 つのプロパティを持っています。ただし、「SUM(salary)」は有効な識別子ではありません。集計やその他の関数を含む計算列を使用している場合は、SQL ステートメントでその計算列のエイリアス(別名)を指定します。エイリアスは、結果データオブジェクトのプロパティ名として使用されます。例えば、前述のステートメントでこの方法を使用すると次のようになります。

SELECT departmentId, SUM(salary) AS salarySubtotal FROM employees GROUP BY departmentId

このステートメントの data 配列では、結果オブジェクトは departmentId および salarySubtotal という名前の 2 つのプロパティを持っています。

結果セットに含まれている行数や列数に関わらず、data プロパティは常に配列になります。例えば、以下の SELECT ステートメントの結果は、1 行 1 列構成で、実質的に値は 1 つです。

SELECT COUNT(~~) AS numEmployees FROM employees

クエリを実行すると、data プロパティには 1 つのエレメントを持つ配列オブジェクトが追加されます。このエレメントは、単一プロパティ numEmployees を持つオブジェクトです。

結果データで列名が重複している場合、例えば、異なる 2 つのテーブルにそれぞれ id 列が含まれていて、この 2 つの列名が SELECT ステートメントで使用されている場合、重複した列名に対するプロパティ名は、SQLConnection.columnNameStyle プロパティの値に基づいて設定されます。デフォルトでは、各列名がプロパティ名として使用されます。ただし、結果セットに同名の列が複数ある場合は、長い名前の形式([table-name]_[column-name])が一意の列名として使用されます。この動作は、SQLConnection.columnNameStyle プロパティを設定することによって変更できます。

デフォルトでは、data 配列のオブジェクトは Object インスタンスです。ただし、SQLStatement.itemClass プロパティの値をクラスに設定すると、data 配列エレメントは、そのクラスのインスタンスとして作成されます。結果データセットの各列に対応して、itemClass クラスには、結果データセットの列名と正確に一致する名前を持つプロティが必要です。

ステートメントがデータを返さない場合、このプロパティは null になります。これは、SELECT ステートメント以外のステートメントや、0 行を返す SELECT ステートメントの場合に該当します。

次のコードは、itemClass プロパティを使用し、ランタイムに SQL SELECT ステートメントの結果からカスタムクラスのインスタンスを作成させる方法を示したものです。 // Employee class definition package { public class Employee { public var name:String; public var ssn:String; public var id:uint; public override function toString():String { return "id: "+ id.toString() + " name: " + name + " ssn: " + ssn; } } } // using the Employee class as SQLStatement.itemClass var conn:SQLConnection; var dbStatement:SQLStatement; function init():void { conn = new SQLConnection(); conn.addEventListener(SQLEvent.OPEN, connOpenHandler); dbStatement = new SQLStatement(); dbStatement.sqlConnection = conn; dbStatement.text = "SELECT id, name, ssn FROM employees"; dbStatement.itemClass = Employee; var dbFile:File = new File(File.separator + "employee.db"); conn.open(dbFile); } function connOpenHandler(event:SQLEvent):void { dbStatement.addEventListener(SQLEvent.RESULT, resultHandler); dbStatement.execute(); } function resultHandler(event:SQLEvent):void { var result:SQLResult = dbStatement.getResult(); if (result != null) { var emp:Employee; var numRows:int = result.data.length; for (var i:int = 0; i < numRows; i++) { emp = result.data[i]; trace(emp.toString()); } } }
SQLConnection.columnNameStyleSQLStatement.itemClass
lastInsertRowID SQL INSERT ステートメントによって最後に生成された行識別子です。Number SQL INSERT ステートメントによって最後に生成された行識別子です。

実行されたステートメントが INSERT ステートメントでない場合、この値は 0 になります。

行識別子は、データベース内のテーブルの行を一意に識別するために使用されます。この値は、データベースによって頻繁に生成されます。

主キーと生成される行識別子について詳しくは、「CREATE TABLE」および「式」のセクション(どちらも付録「ローカルデータベースでの SQL サポート」にあります)を参照してください。

flash.data.SQLConnection.lastInsertRowIDflash.events.SQLUpdateEvent.rowID
rowsAffected 操作によって影響を受ける行数を示します。Number 操作によって影響を受ける行数を示します。INSERTUPDATE または DELETE ステートメントによって直接指定されている変更だけがカウントされます。

トリガーによる間接的な変更はカウントされません。トリガーによる変更も含め、変更の合計数を特定するには、SQLConnection.totalChanges プロパティを使用します。

関連する SQL 操作が DELETE ステートメントで、WHERE 句が記述されていない(ステートメントによってテーブルの全行を削除する)場合、削除された行数にかかわらず、rowsAffected プロパティは常に 0 になります。削除された行数を知る必要がある場合は、WHERE 句として WHERE 1 = 1 を記述します。この場合、すべての行が削除され、削除された行数が正確に rowsAffected プロパティに反映されます。ただし、削除される行数によっては、この方法によってステートメントのパフォーマンスに悪影響を与える場合があります。

flash.data.SQLConnection.totalChanges