Автоматически конвертировать .Net ноль в DBNull.Value? - PullRequest
5 голосов
/ 17 августа 2011

Я написал утилиту, которая обрабатывает добавление значений к параметрам данных для ручных SQL-запросов.Потребление выглядит так:

utility.Add("SELECT * FROM MyTable WHERE MyColumn = {0}", myVariable, DBType.TheType);

или

utility.Add("UPDATE MyTable SET MyColumn = {0}", myVariable, DBType.TheType);

Как обрабатывать нулевое значение для myVariable?

  1. Все значения должны быть полностью доверенными.Ответственность лежит исключительно на потребителе.Как потребитель узнает, что null будет обработан в любом случае?
  2. null никогда не может работать, поэтому он должен выдать исключение NullArgumentException.Зачем идти дальше?
  3. null должен автоматически интерпретироваться как DBNull.Value, поскольку это единственное жизнеспособное решение.Это утилита, верно?Сделайте его полезным и высушите некоторый код!

Необязательный дополнительный вопрос: если бы эти аргументы были выдвинуты тремя политическими кандидатами, какими были бы их партии?(Пожалуйста, укажите страну происхождения таких партий)

Ответы [ 2 ]

1 голос
/ 17 августа 2011

Рок Null Coalescing Op :

В вашем добавлении добавьте еще один параметр для = ... utility.Add ("SELECT * FROM MyTable WHERE MyColumn {0} {1}", myVariable, DBType.TheType);

Когда вы форматируете строку в методе Add: ... = String.Format (sql, myVariable имеет значение null?" IS ":" = ", myVariable ??"Null"

Вы, вероятно, захотите немного рассказать об этом, например, придерживаться параметра on и бросить во временном построителе строк; возможно, придется использовать конструкцию? /: Для типа, тожевезде, где это используется. Удачи.

0 голосов
/ 17 августа 2011

Null является допустимым параметром запроса, вам не нужно преобразовывать его в DBNull, чтобы использовать его в запросе.

...