SELECT
ステートメントの実行が完了したら、次の手順として、取得したデータにアクセスします。
SELECT
ステートメントの実行結果のデータを取得するには、SQLStatement オブジェクトの
getResult()
メソッドを呼び出します。
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 インスタンスになります。そのオブジェクトには、結果セットの列と同じ名前のプロパティがあります。そのプロパティに、結果セットの列の値が格納されます。例えば、「itemId」、「itemName」および「price」の 3 つの列を含む結果セットを
SELECT
ステートメントで指定した場合は、
itemId
、
itemName
および
price
の 3 つのプロパティを持つ Object インスタンスが結果セットの各行について作成されて、各プロパティにそれぞれの列の値が格納されます。
次のコードリストでは、text プロパティが
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);
}
次のコードリストで使用されているのは、先ほどの例と同じテクニックです。ただし、今度は同期実行モードを使用しています。この例では、text プロパティが
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);
}