5

我编写了一个实用程序来处理向数据参数添加值以进行手动 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 回答 2

1

摇滚空合并操作

在您的添加中,为 =... 实用程序添加另一个参数。Add("SELECT * FROM MyTable WHERE MyColumn {0}{1}", myVariable, DBType.TheType);

当您在 Add 方法中格式化字符串时: ... = String.Format(sql,myVariable is null ? " IS " : " = ", myVariable ?? "Null"

您可能需要稍微解释一下,例如,坚持使用 on 参数并在临时字符串生成器中折腾;可能必须使用 ?/: 类型的构造,无论在哪里使用。祝你好运。

于 2011-08-17T06:40:04.937 回答
0

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

于 2011-08-16T23:15:26.147 回答