这不是参数的工作方式。
如果您的
IN列表为
1, 2, 3,那么该命令将尝试删除ID等于的记录
"1, 2,3",即没有记录。因此不会引发任何错误,也不会删除任何记录,因为没有找到任何记录。因此,您还将发现您的代码仅在列表包含1个项目时才有效。
解决方案:您必须构建删除查询(字符串操作),而不是使用参数。只是提防SQL注入。
更新
从您的代码,将是这样的:
Dim delcmd = "DELETe FROM directory WHERe id IN (" + Join(dirID, ",") + ")"Dim cmd As New SQLiteCommand(delcmd, conn)而且没有参数调用。当心:我只是调整了您的代码,但是 它不是 SQL注入安全的。您应该阅读有关内容以及中有关该主题的内容。



