我正在开发flex actionscript项目。我将在sqlite
数据库中保存/插入记录,我得到了响应。
但是,记录某些记录的表单不会插入到表中。当我发现错误时,它会给出sql错误。
near' /':语法错误
作为回应,我有完整的HTML标记。
我在for loop
内写了/执行查询,如:
var insert:SQLStatement = new SQLStatement();
insert.sqlConnection = sqlConnectionSync;
insert.text = 'INSERT OR IGNORE INTO TableName (MessageID, AccountID, Body) VALUES ("' + listArray[i].MessageID + '","' + listArray[i].AccountID + '","' + listArray[i].Body + '")';
insert.execute();
我也尝试更改"
代替'
,反之亦然。
但是它会给出'
错误#3115:SQL错误。
near' ll':语法错误
和
near' _blank':语法错误
任何帮助都会非常感激。
答案 0 :(得分:2)
为避免此类问题,您可以使用SQLStatement.parameters
这样的属性,例如:
var insert:SQLStatement = new SQLStatement();
insert.text = 'INSERT OR IGNORE INTO TableName (MessageID, AccountID, Body) VALUES (:param1, :param2, :param3)';
insert.parameters[':param1'] = listArray[i].MessageID;
insert.parameters[':param2'] = listArray[i].AccountID;
insert.parameters[':param3'] = listArray[i].Body;
insert.execute();
希望可以提供帮助。
答案 1 :(得分:0)
将完整查询作为文本发布会有所帮助,但很可能您的数据中包含“或”字符(例如...... =“_ blank”或“You'll”)。您需要先转义变量值将它们插入数据库。我已经从你的例子中切换了“和”:
insert.text = "INSERT OR IGNORE INTO TableName (MessageID, AccountID, Body) VALUES ('" + escapeChars(listArray[i].MessageID) + "','" + escapeChars(listArray[i].AccountID) + "','" + escapeChars(listArray[i].Body) + "')";
private function escapeChars(myString:String):String
{
// Since we are using "'" we'd need to escape all other "'" characters
return myString.replace(/'/gi, "\'");
}