自动将.Net null转换为DBNull.Value?

时间:2011-08-16 22:53:19

标签: c# .net sql database dbnull

我编写了一个实用程序来处理为手动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,因为它是唯一可行的解​​决方案。这是一个实用程序,对吗?使它可以使用并干掉一些代码!
  4. 可选的红利问题:如果这些论点是由三位政治候选人提出的,他们的政党会是什么? (请说明这些政党的母国)

2 个答案:

答案 0 :(得分:1)

摇滚Null Coalescing Op

在你的添加中放入另一个parm = ...     utility.Add(“SELECT * FROM MyTable WHERE MyColumn {0} {1}”,      myVariable,DBType.TheType);

在Add方法中格式化字符串时:     ... = String.Format(sql,myVariable是null?“IS”:“=”,myVariable ??“Null”

你可能想要解释一下这一点,例如,坚持参数并在临时字符串构建器中折腾;可能必须使用该类型的?/:构造,无论在何处使用。祝你好运。

答案 1 :(得分:0)

Null是一个有效的查询参数,您无需将其转换为DBNull即可在查询中使用它。