Una vez que la declaración
SELECT
se ha terminado de ejecutar, el siguiente paso es acceder a los datos que se recuperaron. Los datos de resultados se recuperan de la ejecución de una declaración
SELECT
llamando al método
getResult()
del objeto SQLStatement:
var result:SQLResult = selectStatement.getResult();
El método
getResult()
devuelve un objeto
SQLResult
. La propiedad
data
del objeto SQLResult es un conjunto que contiene los resultados de la declaración
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];
}
Cada fila de datos del resultado
SELECT
se convierte en una instancia de Object incluida en el conjunto
data
. Dicho objeto tiene propiedades cuyos nombres coinciden con los nombres de columna del conjunto de resultados. Las propiedades contienen los valores de las columnas del conjunto de resultados. Por ejemplo, supongamos que una declaración
SELECT
especifica un conjunto de resultados con tres columnas llamadas “itemId,” “itemName” y “price.” Para cada fila en el conjunto de resultados, se crea una instancia Object con propiedades denominadas
itemId
,
itemName
y
price
. Esas propiedades contienen los valores de sus respectivas columnas.
El siguiente ejemplo de código define una instancia SQLStatement cuyo texto es una instrucción
SELECT
. La declaración recupera las filas que contiene los valores de la columna
firstName
y
lastName
de todas las filas de una tabla denominada
employees
. Este ejemplo utiliza el modo de ejecución asíncrono. Cuando se termina la ejecución, se llama al método
selectResult()
, y se accede a las filas de datos resultantes usando
SQLStatement.getResult()
y se muestran usando el método
trace()
. Observe que este código supone que existe una instancia de SQLConnection denominada
conn
que ya ha sido creada y ya está conectada a una base de datos. Asimismo, supone que la tabla “employees” ya ha sido creada y llenada con datos.
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>
El siguiente ejemplo de código demuestra las mismas técnicas como la anterior pero utiliza el modo de ejecución sincrónico. El ejemplo define una instancia de
SQLStatement
cuyo texto es una instancia
SELECT
. La declaración recupera las filas que contiene los valores de la columna
firstName
y
lastName
de todas las filas de una tabla denominada
employees
. Se accede a las filas de datos resultantes utilizando
SQLStatement.getResult()
y se muestran usando el método
trace()
. Observe que este código supone que existe una instancia de SQLConnection denominada
conn
que ya ha sido creada y ya está conectada a una base de datos. Asimismo, supone que la tabla “employees” ya ha sido creada y llenada con datos.
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>