actionscript循环工作第二次

时间:2012-10-17 12:03:42

标签: actionscript-3

我有一个带有SQLite数据库的移动应用程序,用于在手机上存储详细信息,我想通过PHP将此表的内容同步到远程mySQL服务器。

我使用以下内容将行写入远程服务器。

protected function button_clickHandler(event:MouseEvent):void
        {
            var result:SQLResult;
            var numRows:int ;
            conn = new SQLConnection();
            conn.open(file, SQLMode.CREATE);
            selectStmt.sqlConnection = conn; 
            var sql:String =  "SELECT * FROM surveyResponseHeader"; 
            selectStmt.text = sql; 
            selectStmt.execute(); 
            result = selectStmt.getResult(); 
            numRows = result.data.length; 
            trace (result.data.length);
            trace (numRows);
            for (var i:int = 0; i< numRows; i++){

                surveyresponse.surveyID = parseInt(result.data[i]["surveyID"]);
                surveyresponse.surveySite =result.data[i]["surveySite"];
                surveyresponse.surveyReference = result.data[i]["surveyReference"];
                surveyresponse.siteManager =result.data[i]["siteManager"];
                surveyresponse.surveyDate = result.data[i]["surveyDate"];
                surveyresponse.surveyNextVisit = result.data[i]["surveyNextVisit"];
                surveyresponse.surveySignature = result.data[i]["surveySignature"];
                surveyresponse.surveyImage =result.data[i]["surveyImage"];
                surveyresponseheaderService.createSurveyresponseheader(surveyresponse);

            }

        }

我的问题:

在第一次运行时,只发布最后一行,并根据SQLLite查询返回的行数多次发布,在第二次运行时它正确发布,为什么会这样?

我现在已经盯着这看了好几个小时,看不出我哪里出错了。

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

您希望它已排序,但您不包含ORDER BY语句 默认情况下,SQL会对主键进行排序。

要对该键以外的其他内容进行排序,您需要使用ORDER BY表达式对其进行指定。 ORDER BY experssion可以可选地后跟一个关键字ASC(首先返回较小的值)或DESC(首先返回较大的值)。如果既未指定ASC或DESC,则默认情况下,行按升序排序(较小的值为先)。

答案 1 :(得分:0)

我建议你添加事件监听器:

dbStatement.addEventListener(SQLEvent.RESULT, resultHandler);
dbStatement.addEventListener(SQLErrorEvent.ERROR, errorHandler);
dbStatement.execute();

然后在处理程序检查结果中:

function resultHandler(event:SQLEvent):void
{
    var result:SQLResult = dbStatement.getResult();
    if (result != null)
    {
        var numRows:int = result.data.length;
        for (var i:int = 0; i < numRows; i++)
        {
            var row:Object = result.data[i];
            trace("id:", row.id, ", name:", row.name, ", ssn:", row.ssn);
        }
    }
}

function errorHandler(event:SQLErrorEvent):void
{
    trace("An error occured while executing the statement.");
}

help for execute() method

中所述