我有一个带有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查询返回的行数多次发布,在第二次运行时它正确发布,为什么会这样?
我现在已经盯着这看了好几个小时,看不出我哪里出错了。
任何建议表示赞赏。
答案 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.");
}
中所述