【发布时间】:2011-01-31 03:50:27
【问题描述】:
我正在尝试在我的 Adobe AIR 应用程序(运行时 2.5)中删除 sqlite 表中的多行。
这是使用“IN”运算符的语句:
"DELETE FROM mylist WHERE tdId IN (tdId1, tdId2, tdId3, ...)";
其中 tdId1、tdId2 等将在运行时根据用户选择删除的行来确定。用户可以删除任意数量的行。
我尝试过类似的方法:
//delete statement text
"DELETE FROM mylist WHERE tdId IN :tdId";
//delete statement parameters: take 1.
//Got "argument error: near ':tdId': syntax error"
deleteStmt.parameters[":tdId"] = "(26, 32)";
//delete statement parameters: take 2.
//Also got "argument error: near ':tdId': syntax error"
var arr:Array = [26, 32];
deleteStmt.parameters[":tdId"] = arr;
如何删除多行?
[Edit] 所以看起来前面提到的带有参数 [":tdId"] 的缓存语句在删除多行时不起作用。当尝试在异步模式下多次执行delete语句时,队列中的第一行被删除后,Flash会抛出以下错误:
“错误 #3110: 操作不能 在 SQLStatement.executing 时执行 是真的。”
用回调链接这些删除似乎太麻烦了。所以我想我正在使用我的最后手段:在运行时构建 sql。结论:在这种情况下不能使用缓存语句...
【问题讨论】:
-
作为最后的手段,您可以在运行时使用所有这些 id 格式化查询字符串。
标签: actionscript-3 sqlite air