パッケージ | flash.data |
クラス | public class SQLResult |
継承 | SQLResult Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
SQL ステートメントの SQLResult インスタンスには、SQLStatement.getResult()
メソッドを呼び出してアクセスします。また、SQLStatement.execute()
または SQLStatement.next()
の呼び出しで指定された Responder インスタンスの結果ハンドラーに渡す引数としてアクセスすることもできます。一般に、SQLResult インスタンスは開発者のコードでは直接作成されません。
SQLResult オブジェクトは、SELECT
ステートメントから返されるデータの行へのアクセス(data
プロパティを使用)、INSERT
ステートメントの行識別子情報の取得(lastInsertRowID
プロパティを使用)、INSERT
、UPDATE
または DELETE
ステートメントの影響を受ける行数の特定(rowsAffected
プロパティを使用)、または取得されていない SELECT
の結果行が他にもあるかどうかの特定(complete
プロパティを使用)のために使用します。
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
complete : Boolean [読み取り専用]
ステートメント実行から結果データがすべて返されているかどうかを示します。 | SQLResult | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
data : Array [読み取り専用]
ステートメント実行、具体的には SQL SELECT ステートメントが実行された場合に、結果として返されるデータです。 | SQLResult | ||
lastInsertRowID : Number [読み取り専用]
SQL INSERT ステートメントによって最後に生成された行識別子です。 | SQLResult | ||
rowsAffected : Number [読み取り専用]
操作によって影響を受ける行数を示します。 | SQLResult |
メソッド | 定義元 | ||
---|---|---|---|
SQLResult インスタンスを作成します。 | SQLResult | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object |
complete | プロパティ |
complete:Boolean
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
ステートメント実行から結果データがすべて返されているかどうかを示します。
ステートメントが 1 つまたは複数の行を返す場合、このプロパティはすべての行が返されているかどうかを示します。SQLStatement オブジェクトの execute()
メソッドが、prefetch
引数値を指定して呼び出されている場合、指定された行数の結果データだけが SQLResult オブジェクトの data
プロパティに返されます。その後 SQLStatement.next()
を呼び出すと、さらに別のデータを使用できるようになります。このプロパティは、最終的な結果が返された時期を特定するために使用します。
実行時は行数が不明なので、ステートメントが完了したと見なされる前は、データベースカーソルが最終行を越えて移動することに注意してください。SQLStatement.execute()
ステートメントが、prefetch
引数を指定して呼び出されている場合、結果セットの合計行数よりも 1 行以上多く要求しないと、結果として得られる SQLResult インスタンスの complete
プロパティは true
になりません。
実装
public function get complete():Boolean
関連する API エレメント
data | プロパティ |
data:Array
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
ステートメント実行、具体的には 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
ステートメントの場合に該当します。
実装
public function get data():Array
関連する API エレメント
例 ( この例の使用方法 )
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()); } } }
lastInsertRowID | プロパティ |
lastInsertRowID:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
SQL INSERT
ステートメントによって最後に生成された行識別子です。
実行されたステートメントが INSERT
ステートメントでない場合、この値は 0 になります。
行識別子は、データベース内のテーブルの行を一意に識別するために使用されます。この値は、データベースによって頻繁に生成されます。
主キーと生成される行識別子について詳しくは、「CREATE TABLE」および「式」のセクション(どちらも付録「ローカルデータベースでの SQL サポート」にあります)を参照してください。
実装
public function get lastInsertRowID():Number
関連する API エレメント
rowsAffected | プロパティ |
rowsAffected:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
操作によって影響を受ける行数を示します。INSERT
、UPDATE
または DELETE
ステートメントによって直接指定されている変更だけがカウントされます。
トリガーによる間接的な変更はカウントされません。トリガーによる変更も含め、変更の合計数を特定するには、SQLConnection.totalChanges
プロパティを使用します。
関連する SQL 操作が DELETE
ステートメントで、WHERE
句が記述されていない(ステートメントによってテーブルの全行を削除する)場合、削除された行数にかかわらず、rowsAffected
プロパティは常に 0 になります。削除された行数を知る必要がある場合は、WHERE
句として WHERE 1 = 1
を記述します。この場合、すべての行が削除され、削除された行数が正確に rowsAffected
プロパティに反映されます。ただし、削除される行数によっては、この方法によってステートメントのパフォーマンスに悪影響を与える場合があります。
実装
public function get rowsAffected():Number
関連する API エレメント
SQLResult | () | コンストラクター |
public function SQLResult(data:Array = null, rowsAffected:Number = 0, complete:Boolean = true, rowID:Number = 0)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0 |
SQLResult インスタンスを作成します。一般に、SQLResult コンストラクターは開発者のコードでは直接呼び出されません。特定の SQLStatement インスタンスに関連付けられている SQLResult を取得するには、そのインスタンスの getResult()
メソッドを呼び出します。execute()
メソッドまたは next()
メソッドの呼び出しで Responder インスタンスが指定されている場合、SQLResult インスタンスは、引数として結果ハンドラー関数にも渡されます。
data:Array (default = null ) — ステートメントの実行から返される行の配列です。ステートメントが行を返さない場合、この値は null になります。
| |
rowsAffected:Number (default = 0 ) — 実行されたステートメントの影響を受ける行数を示します。
| |
complete:Boolean (default = true ) — 取得できる行が他にもあるか、すべてのデータが返されているかを示します。
| |
rowID:Number (default = 0 ) — ステートメントが SQL INSERT 操作の場合、行に対する新しい一意の識別子になります。
|
Tue Jun 12 2018, 10:34 AM Z