Po zakończeniu wykonywania instrukcji
SELECT
kolejnym krokiem jest uzyskanie dostępu do pobranych danych. W celu pobrania danych wynikowych wykonanej instrukcji
SELECT
należy wywołać metodę
getResult()
obiektu SQLStatement:
var result:SQLResult = selectStatement.getResult();
Metoda
getResult()
zwraca obiekt
SQLResult
. Właściwość
data
obiektu SQLResult jest obiektem Array zawierającym wyniki wykonania instrukcji
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];
}
Każdy wiersz danych w zestawie wynikowym instrukcji
SELECT
staje się instancją klasy Object zawartą w tablicy (obiekcie Array)
data
. Ten obiekt zawiera właściwości, których nazwy są zgodne z nazwami kolumn w zestawie wynikowym. Właściwości zawierają wartości z kolumn zestawu wynikowego. Przykład: załóżmy, że instrukcja
SELECT
określa zestaw wynikowy z trzema kolumnami o nazwach „itemId”, „itemName” i „price”. Dla każdego wiersza w zestawie wynikowym tworzona jest instancja Object z właściwościami o nazwach
itemId
,
itemName
i
price
. Te właściwości zawierają wartości z odpowiadających im kolumn.
Poniższy fragment kodu definiuje instancję SQLStatement, której tekst jest instrukcją
SELECT
. Instrukcja pobiera wiersze zawierające wartości kolumn
firstName
i
lastName
ze wszystkich wierszy tabeli o nazwie
employees
. W tym przykładzie prezentowany jest tryb wykonania asynchronicznego. Po zakończeniu wykonywania następuje wywołanie metody
selectResult()
, a dostęp do wierszy wynikowych jest uzyskiwany za pomocą metody
SQLStatement.getResult()
. Dane wynikowe są wyświetlane za pomocą metody
trace()
. W tym przykładzie przyjęto, że istnieje instancja SQLConnection o nazwie
conn
, która jest już połączona z bazą danych. Założono również, że tabela „pracownicy” została utworzona i zapełniona danymi.
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>
Poniższy fragment kodu prezentuje techniki podobne do poprzedniego fragmentu, ale w tym fragmencie zastosowano tryb wykonania synchronicznego. W przykładzie zdefiniowano instancję klasy
SQLStatement
, której tekstem jest instrukcja
SELECT
. Instrukcja pobiera wiersze zawierające wartości kolumn
firstName
i
lastName
z wszystkich wierszy tabeli o nazwie
employees
. Dostęp do wierszy wynikowych jest uzyskiwany za pomocą metody
SQLStatement.getResult()
. Dane wynikowe są wyświetlane za pomocą metody
trace()
. W tym przykładzie przyjęto, że istnieje instancja SQLConnection o nazwie
conn
, która jest już połączona z bazą danych. Założono również, że tabela „pracownicy” została utworzona i zapełniona danymi.
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>