SELECT
ステートメントの実行が完了したら、次の手順として、取得したデータにアクセスします。
SELECT
ステートメントの実行結果のデータを取得するには、SQLStatement オブジェクトの
getResult()
メソッドを呼び出します。
var result:SQLResult = selectStatement.getResult();
getResult()
メソッドは
SQLResult
オブジェクトを返します。SQLResult オブジェクトの
data
プロパティは
SELECT
ステートメントの結果が格納された配列です。
var numResults:int = result.data.length;
for (var i:int = 0; i < numResults; i++)
{
// row is an Object representing one row of result data
var row:Object = result.data[i];
}
SELECT
の結果セットの各データ行は、
data
配列に格納される Object インスタンスになります。そのオブジェクトには、結果セットの列と同じ名前のプロパティがあります。そのプロパティに、結果セットの列の値が格納されます。例えば、「itemId」、「itemName」および「price」の 3 つの列を含む結果セットを
SELECT
ステートメントで指定した場合は、
itemId
、
itemName
および
price
の 3 つのプロパティを持つ Object インスタンスが結果セットの各行について作成されて、各プロパティにそれぞれの列の値が格納されます。
次のコードリストでは、text プロパティが
SELECT
ステートメントの SQLStatement インスタンスを定義しています。このステートメントは、
employees
というテーブルのすべての行の
firstName
列と
lastName
列の値を含む行を取得します。この例では非同期実行モードを使用しています。実行が完了したら、
selectResult()
メソッドを呼び出します。その後、
SQLStatement.getResult()
を使用して結果行にアクセスして、
trace()
メソッドを使用して表示します。このリストでは、
conn
という名前の SQLConnection インスタンスが既に作成されてデータベースに接続されていることと、「employees」テーブルが既に作成されてデータが設定されていることを前提としています。
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
// ... create and open the SQLConnection instance named conn ...
// create the SQL statement
var selectStmt:SQLStatement = new SQLStatement();
selectStmt.sqlConnection = conn;
// define the SQL text
var sql:String =
"SELECT firstName, lastName " +
"FROM employees";
selectStmt.text = sql;
// register listeners for the result and error events
selectStmt.addEventListener(SQLEvent.RESULT, selectResult);
selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError);
// execute the statement
selectStmt.execute();
function selectResult(event:SQLEvent):void
{
// access the result data
var result:SQLResult = selectStmt.getResult();
var numRows:int = result.data.length;
for (var i:int = 0; i < numRows; i++)
{
var output:String = "";
for (var columnName:String in result.data[i])
{
output += columnName + ": " + result.data[i][columnName] + "; ";
}
trace("row[" + i.toString() + "]\t", output);
}
}
function selectError(event:SQLErrorEvent):void
{
trace("Error message:", event.error.message);
trace("Details:", event.error.details);
}
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.events.SQLErrorEvent;
import flash.events.SQLEvent;
private function init():void
{
// ... create and open the SQLConnection instance named conn ...
// create the SQL statement
var selectStmt:SQLStatement = new SQLStatement();
selectStmt.sqlConnection = conn;
// define the SQL text
var sql:String =
"SELECT firstName, lastName " +
"FROM employees";
selectStmt.text = sql;
// register listeners for the result and error events
selectStmt.addEventListener(SQLEvent.RESULT, selectResult);
selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError);
// execute the statement
selectStmt.execute();
}
private function selectResult(event:SQLEvent):void
{
// access the result data
var result:SQLResult = selectStmt.getResult();
var numRows:int = result.data.length;
for (var i:int = 0; i < numRows; i++)
{
var output:String = "";
for (var columnName:String in result.data[i])
{
output += columnName + ": " + result.data[i][columnName] + "; ";
}
trace("row[" + i.toString() + "]\t", output);
}
}
private function selectError(event:SQLErrorEvent):void
{
trace("Error message:", event.error.message);
trace("Details:", event.error.details);
}
]]>
</mx:Script>
</mx:WindowedApplication>
次のコードリストで使用されているのは、先ほどの例と同じテクニックです。ただし、今度は同期実行モードを使用しています。この例では、text プロパティが
SELECT
ステートメントの
SQLStatement
インスタンスを定義しています。このステートメントは、
employees
というテーブルのすべての行の
firstName
列と
lastName
列の値を含む行を取得します。
SQLStatement.getResult()
を使用して結果行にアクセスして、
trace()
メソッドを使用して表示します。このリストでは、
conn
という名前の SQLConnection インスタンスが既に作成されてデータベースに接続されていることと、「employees」テーブルが既に作成されてデータが設定されていることを前提としています。
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.errors.SQLError;
// ... create and open the SQLConnection instance named conn ...
// create the SQL statement
var selectStmt:SQLStatement = new SQLStatement();
selectStmt.sqlConnection = conn;
// define the SQL text
var sql:String =
"SELECT firstName, lastName " +
"FROM employees";
selectStmt.text = sql;
try
{
// execute the statement
selectStmt.execute();
// access the result data
var result:SQLResult = selectStmt.getResult();
var numRows:int = result.data.length;
for (var i:int = 0; i < numRows; i++)
{
var output:String = "";
for (var columnName:String in result.data[i])
{
output += columnName + ": " + result.data[i][columnName] + "; ";
}
trace("row[" + i.toString() + "]\t", output);
}
}
catch (error:SQLError)
{
trace("Error message:", error.message);
trace("Details:", error.details);
}
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.data.SQLConnection;
import flash.data.SQLResult;
import flash.data.SQLStatement;
import flash.errors.SQLError;
private function init():void
{
// ... create and open the SQLConnection instance named conn ...
// create the SQL statement
var selectStmt:SQLStatement = new SQLStatement();
selectStmt.sqlConnection = conn;
// define the SQL text
var sql:String =
"SELECT firstName, lastName " +
"FROM employees";
selectStmt.text = sql;
try
{
// execute the statement
selectStmt.execute();
// access the result data
var result:SQLResult = selectStmt.getResult();
var numRows:int = result.data.length;
for (var i:int = 0; i < numRows; i++)
{
var output:String = "";
for (var columnName:String in result.data[i])
{
output += columnName + ": ";
output += result.data[i][columnName] + "; ";
}
trace("row[" + i.toString() + "]\t", output);
}
}
catch (error:SQLError)
{
trace("Error message:", error.message);
trace("Details:", error.details);
}
}
]]>
</mx:Script>
</mx:WindowedApplication>