| パッケージ | 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
継承されるパブリックプロパティを隠す
継承されるパブリックプロパティを表示