SQLStatement の itemClass プロパティが定義されていない限り、返される行 (with(out)) に関係なく、常に匿名オブジェクトが返されます。これは基本的に、リモートが AMF でどのように機能するかです。
できることは 2 つあります (プロジェクトの複雑さによって異なります)。
- SQLStatement.itemClass を指定します。これにより、列名と同じ名前のパブリック アクセサー (var または get/set) を使用して戻り値の結果が定義および設定されます。
- 匿名のままにしておくと、オブジェクトを定義した場合と同じように、オブジェクトを反復するオブジェクトに列名が関連付けられます。
超基本的な例:
//SQL table schema
CREATE TABLE accounts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
num INTEGER NOT NULL,
name TEXT NOT NULL,
last_update DATE
);
//Define an Account class:
public class Account {
public var id:int;
public var num:int;
public var name:String;
public var last_update:Date;
}
//A statement to execute to get all accounts returned as an array of "Account"
var statement:SQLStatement = new SQLStatement();
statement.sqlConnection = myConn;
statement.itemClass = Account;
statement.text = 'SELECT * FROM accounts';
statement.addEventListener(SQLEvent.RESULT, onResults);
statement.execute();
protected function onResults(event:SQLEvent):void
{
var statement:SQLStatement = SQLStatement(event.currentTarget);
var results:SQLResult = statement.getResult();
for each (var account:Account in results)
{
//do something useful like populate a model, grid, etc...
}
}
//Anonymous objects would iterate much the same way -when an item class isn't defined
protected function onResults(event:SQLEvent):void
{
var statement:SQLStatement = SQLStatement(event.currentTarget);
var results:SQLResult = statement.getResult();
for each (var account:Object in results)
{
//our 'Object' will have properties: id, num, name, last_update
//do something useful like populate a model, grid, etc...
}
}