När
SELECT
-satsen har körts är nästa steg att få åtkomst till de data som har hämtats. Du hämtar resultatdata från körning av en
SELECT
-sats genom att anropa SQLStatement-objektets
getResult()
-metod:
var result:SQLResult = selectStatement.getResult();
Metoden
getResult()
returnerar ett
SQLResult
-objekt. SQLResult-objektets egenskap
data
är en array som innehåller resultaten från satsen
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];
}
Varje datarad i resultatmängden
SELECT
blir en Object-instans i arrayen
data
. Detta objekt har egenskaper vilkas namn matchar resultatmängdens kolumnnamn. Egenskaperna innehåller värden från resultatmängdens kolumner. Anta till exempel att
SELECT
-satsen anger en resultatmängd med tre kolumner som heter ”itemId”, ”itemName” och ”price”. För varje rad i resultatmängden skapas en objektinstans med egenskaper som får namnen
itemId
,
itemName
och
price
. Dessa egenskaper innehåller värden från sina respektive kolumner.
I följande kodexempel definieras en SQLStatement-instans vars text är en
SELECT
-sats. Satsen hämtar rader som innehåller
firstName
- och
lastName
-kolumnvärden för alla rader i en tabell med namnet
employees
. I det här exemplet används asynkront körningsläge. När körningen har slutförts anropas metoden
selectResult()
, och du får åtkomst till resulterande datarader med
SQLStatement.getResult()
och visar dem med metoden
trace()
. Observera att koden i det här exemplet innehåller en SQLConnection-instans med namnet
conn
som redan har initierats och är ansluten till databasen. I exemplet antas också att tabellen ”employees” redan har skapats och fyllts i med data.
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>
I följande kodexempel visas samma tekniker som i föregående exempel, men i synkront körningsläge. I exemplet definieras en
SQLStatement
-instans vars text är en
SELECT
-sats. Satsen hämtar rader som innehåller
firstName
- och
lastName
-kolumnvärden för alla rader i en tabell med namnet
employees
. Du får åtkomst till de resulterande dataraderna med
SQLStatement.getResult()
och visar dem med metoden
trace()
. Observera att koden i det här exemplet innehåller en SQLConnection-instans med namnet
conn
som redan har initierats och är ansluten till databasen. I exemplet antas också att tabellen ”employees” redan har skapats och fyllts i med data.
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>