Проблема возникает при вставке параметра "(26,32)".Поскольку параметр не является просто подстановкой значения, он представляет переменную для SQL, а НЕ STRING.Следовательно, ваше утверждение фактически стало (или примерно) в вашем первом дубле ...
"DELETE FROM mylist WHERE tdId IN '(26,32)'"
Следовательно, ваша ошибка из-за синтаксиса ... Во втором дубле она ухудшается ...
"DELETE FROM mylist WHERE tdId IN *Array(26,32)*"
Поскольку переменная не преобразуется в строковое значение, на самом деле этого не происходит.Но происходит следующее: когда интерпретатор (SQL) пытается понять код после текста «IN», он получает объект ARRAY, который совершенно не знает, что делать ... Это даже не допустимый тип SQL....
Решение? [Я еще не полностью протестировал его, поэтому, пожалуйста, сделайте]
var toDel:Array = [26,32]
//delete statement text
var baseStr:String = "DELETE FROM mylist WHERE tdId IN (";
var midStr:String = '';
//delete statement parameters: Processing parameter
for( var i = 0; i < toDel.length; i++ ) {
deleteStmt.parameters[i] = toDel[i];
if(midStr.length > 0) { midStr += ' , '; }
midStr += '?';
}
deleteStmt.text = baseStr + midStr + ' )';
//Then execute
Так что в этом случае происходит эффективное выполнение...
"DELETE FROM mylist WHERE tdId IN ( :val1 , :val2 )"
Таким образом вы по-прежнему сохраняете безопасное (полезное) использование параметров, не преобразуя все в строку.
РЕДАКТИРОВАТЬ: если выНе понимаю, как использовать параметр / '?'см .: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/data/SQLStatement.html#parameters