строковый массив -> массив longId в операторе SQL - PullRequest
0 голосов
/ 24 июня 2009

Я получаю строку из HttpContext.Current.Request ["key"], которую затем делаю split (','), если она не равна нулю.

Теперь я хотел бы написать SQL-оператор, удаляющий любой msgId (long / Int64), который соответствует ключам, как мне его написать? Единственный способ понять это - преобразовать строку [] в long [] и затем выполнить цикл SQL-оператора. Есть ли лучший способ?

PS: Использование sqlite ATM, но переключение на другой механизм SQL. (я еще не выбрал сервер, поэтому не знаю какой)

Ответы [ 2 ]

1 голос
/ 24 июня 2009
DELETE FROM table WHERE id IN (1,2,3,keys)

Будет ли это сделать?

0 голосов
/ 24 июня 2009

Я бы предложил вам использовать решение Бена выше, но с небольшими изменениями. Я заметил, что когда вы используете много элементов в SQL (это было с SQL 2000, не знаю, если это все еще проблема с SQL 2005) в заявлении, запрос имеет тенденцию идти медленно. Попробуйте несколько операторов удаления, количество элементов в операторе 'in' превышает 100.

Ex: DELETE FROM table WHERE id IN (1,2,3 ... n)
    DELETE FROM table WHERE id IN (1,2,3 ... n)

Если вы не ожидаете много предметов, тогда делать это не нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...