SELECT
语句完成执行后,下一步是访问已检索的数据。通过调用 SQLStatement 对象的
getResult()
方法,从执行
SELECT
语句中检索结果数据:
var result = selectStatement.getResult();
getResult()
方法返回
SQLResult
对象。SQLResult 对象的
data
属性是一个包含
SELECT
语句的结果的数组:
var numResults = result.data.length;
for (var i = 0; i < numResults; i++)
{
// row is an Object representing one row of result data
var row = result.data[i];
}
SELECT
结果集中的每行数据成为包含在
data
数组中的 Object 实例。该对象具有其名称与结果集的列名称匹配的属性。该属性包含结果集的列值。例如,假定
SELECT
语句指定一个结果集,该结果集具有名为“itemId”、“itemName”和“price”的三个列。对于结果集中的每一行,使用名为
itemId
、
itemName
和
price
的属性创建 Object 实例。这些属性包含来自其相应列的值。
以下代码清单定义其文本为
SELECT
语句的 SQLStatement 实例。该语句从名为
employees
的表的所有行中检索包含
firstName
和
lastName
列值的行。此示例使用异步执行模式。执行完成时,调用
selectResult()
方法,使用
SQLStatement.getResult()
访问生成的数据行,使用
trace()
方法显示它们。请注意,此列表假定存在一个名为
conn
、已进行实例化并连接到数据库的 SQLConnection 实例。它还假定已创建“employees”表并为其填充了数据。
// Include AIRAliases.js to use air.* shortcuts
// ... create and open the SQLConnection instance named conn ...
// create the SQL statement
var selectStmt = new air.SQLStatement();
selectStmt.sqlConnection = conn;
// define the SQL text
var sql =
"SELECT firstName, lastName " +
"FROM employees";
selectStmt.text = sql;
// register listeners for the result and error events
selectStmt.addEventListener(air.SQLEvent.RESULT, selectResult);
selectStmt.addEventListener(air.SQLErrorEvent.ERROR, selectError);
// execute the statement
selectStmt.execute();
function selectResult(event)
{
// access the result data
var result = selectStmt.getResult();
var numRows = result.data.length;
for (i = 0; i < numRows; i++)
{
var output = "";
for (columnName in result.data[i])
{
output += columnName + ": " + result.data[i][columnName] + "; ";
}
air.trace("row[" + i.toString() + "]\t", output);
}
}
function selectError(event)
{
air.trace("Error message:", event.error.message);
air.trace("Details:", event.error.details);
}
以下代码清单演示与前面的代码清单相同的技术,但使用的是同步执行模式。该示例定义其文本为
SELECT
语句的
SQLStatement
实例。该语句从名为
employees
的表的所有行中检索包含
firstName
和
lastName
列值的行。使用
SQLStatement.getResult()
访问生成的数据行,并使用
trace()
方法显示它们。请注意,此列表假定存在一个名为
conn
、已进行实例化并连接到数据库的 SQLConnection 实例。它还假定已创建“employees”表并为其填充了数据。
// Include AIRAliases.js to use air.* shortcuts
// ... create and open the SQLConnection instance named conn ...
// create the SQL statement
var selectStmt = new air.SQLStatement();
selectStmt.sqlConnection = conn;
// define the SQL text
var sql =
"SELECT firstName, lastName " +
"FROM employees";
selectStmt.text = sql;
try
{
// execute the statement
selectStmt.execute();
// access the result data
var result = selectStmt.getResult();
var numRows = result.data.length;
for (i = 0; i < numRows; i++)
{
var output = "";
for (columnName in result.data[i])
{
output += columnName + ": " + result.data[i][columnName] + "; ";
}
air.trace("row[" + i.toString() + "]\t", output);
}
}
catch (error)
{
air.trace("Error message:", error.message);
air.trace("Details:", error.details);
}