【发布时间】:2016-02-02 18:48:53
【问题描述】:
我正在构建一个 Flash AIR 应用程序,它将作为一个信息亭安装,用于接受访问者 cmets,然后显示以前访问者的 cmets。这需要高度图形化,因此将查询/SQL 结果返回到数据网格不是合适的最终结果。该数据库只是由 Flash 应用程序创建的本地数据库,因为这是一个非网络信息亭安装。
我见过很多 cmets 谈论数据网格,我也见过将所有查询结果显示为单个字符串的代码 - 但我希望填充(不点击数据网格)一系列动态包含我的查询结果的文本字段。
Insert 语句运行良好:
function addData(): void
{
insertStmt = new SQLStatement();
insertStmt.sqlConnection = conn;
var sqlAdd: String = "";
sqlAdd += "INSERT INTO comments (firstName, lastName, homeTown, comment, avatarID, tagID) ";
sqlAdd += "VALUES ('" + inputFirstName + "', ";
sqlAdd += "'" + inputLastName + "', ";
sqlAdd += "'" + inputHomeTown + "', ";
sqlAdd += "'" + inputComment + "', ";
sqlAdd += inputAvatarID + ", ";
sqlAdd += inputTagID;
sqlAdd += ")";
insertStmt.text = sqlAdd;
insertStmt.addEventListener(SQLEvent.RESULT, insertResult);
insertStmt.addEventListener(SQLErrorEvent.ERROR, insertError);
insertStmt.execute();
}
当我点击一个按钮时,我还可以让我的 Select 语句起作用:
function getData(event: MouseEvent): void
{
selectStmt = new SQLStatement();
selectStmt.sqlConnection = conn;
var sql: String = "SELECT firstName, lastName, comment FROM comments";
selectStmt.text = sql;
selectStmt.addEventListener(SQLEvent.RESULT, selectResult);
selectStmt.addEventListener(SQLEvent.RESULT, traceResult);
selectStmt.addEventListener(SQLErrorEvent.ERROR, selectError);
selectStmt.execute();
}
我完全卡住的地方是提取这些信息,或者给每个东西一个变量名以便我以后可以使用它,或者至少将数据放入一个多维数组中,这样我就可以使用类似的语法来引用数据
array[1][firstName]
这是我得到的代码不能正常工作:
function selectResult(event: SQLEvent): void
{
selectStmt.removeEventListener(SQLEvent.RESULT, selectResult);
selectStmt.removeEventListener(SQLErrorEvent.ERROR, selectError);
var result: SQLResult = selectStmt.getResult();
// The results grid works so I know I'm getting the data back
resultsGrid.dataProvider = new DataProvider(result.data);
var resultsArray01: Array;
var newResultsRow: Array;
if (result != null)
{
// Iterate through each entry
for each(var entry: Object in result.data)
{
// Trace entry -- this works when I test it
trace(entry.firstName,entry.comment, entry.homeTown);
// Add entries to array -- where I get into troubles
// I get TypeError: Error #1009: Cannot access a property or method of a null object reference.
newResultsRow.push(entry.firstName, entry.comment, entry.homeTown);
resultsArray01.push(newResultsRow);
}
}
}
对不起,如果这是冗长的。我对 AS3 很陌生,但对 SQL 还算不错。任何帮助表示赞赏。
【问题讨论】:
-
你声明了你的数组,但你没有实例化它们!
var resultsArray01: Array = []; var newResultsRow: Array = []; -
谢谢你,@Karmacon!这确实有很大帮助。我使用了`var resultsArray01: Array = new Array(); var newResultsRow: Array = new Array();` 接下来我需要弄清楚的是如何让循环正常工作,以便为每个循环提供 resultsArray01 和新行。 newResultsRow 正在接受条目,但我不确定 resultsArray01 我会调查嵌套循环吗?
标签: sqlite actionscript-3 flash datagrid