У меня есть код, который ранее, по-видимому, нуждался в применении скобок к оператору SQL из-за столбца с именем «Имя»; "фиксированный" код был:
dynSQL = string.Format("DELETE FROM Platypi WHERE duckbill = '{0}' and [Name] = '{1}'", tmpType, tmpStr);
К сожалению, этот код не справлялся со своей задачей - запись не удалялась. Снятие скобок вокруг столбца «Имя»:
dynSQL = string.Format("DELETE FROM Platypi WHERE duckbill = '{0}' and Name = '{1}'", tmpType, tmpStr);
... заставили его работать. Почему добавление «подтяжки» к имени столбца может привести к тому, что столбец не будет распознан? Ответ на вопрос здесь указывает, что заключение имен столбцов (и имен таблиц) в скобки — это безопасный способ избежать конфликтов имен с другими ключевыми словами объектов/баз данных и т.п.
Когда SQL со скобками терпит неудачу, сообщение об ошибке не отображается, оно просто не работает.
Обратите внимание, однако, что это непоследовательно; иногда SQL, который содержит «[Имя]», а не «Имя», работает нормально - IOW, иногда работает тот же оператор SQL с тем же значением для «утконоса», но с другим для «Имени»; с «valerie» это не удается (когда столбец с именем «Name» заключен в скобки).