Это не так, как работают параметры.
Если ваш список IN
равен 1, 2, 3
, команда пытается удалить запись, в которой идентификатор равен "1, 2, 3"
, что не равно ни одному.Таким образом, никакая ошибка не выдана, и никакая запись не удалена, потому что ни одна не была найдена.Таким образом, вы также обнаружите, что ваш код работает только тогда, когда ваш список содержит 1 элемент.
Решение: вам нужно создать запрос на удаление (манипулирование строками), а не работать с параметрами.Просто остерегайтесь SQL-инъекций .
Обновление
Из вашего кода это будет примерно так:
Dim delcmd = "DELETE FROM directory WHERE id IN (" + Join(dirID, ",") + ")"
Dim cmd As New SQLiteCommand(delcmd, conn)
И без вызова параметров.Осторожно: я только что настроил ваш код, но это не SQL-инъекция.Вы должны прочитать об этом и о том, что было написано на эту тему здесь, в StackOverflow.