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

标签 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. 所有值(value)观都应该得到充分信任。责任完全由消费者承担。消费者如何知道无论如何都会处理 null?
  2. null 永远无法工作,因此它应该抛出 NullArgumentException。为什么要更进一步?
  3. null 应自动解释为 DBNull.Value,因为它是唯一可行的解​​决方案。这是一个实用程序,对吧?让它可用并干掉一些代码!

可选的附加问题:如果这些论点是由三位政治候选人提出的,他们的政党会是什么? (请说明此类当事人的祖国)

最佳答案

摇滚 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 参数并加入临时字符串构建器;可能还必须为类型使用 ?/: 构造,无论它在哪里使用。祝你好运。

关于c# - 自动将 .Net null 转换为 DBNull.Value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086053/

相关文章:

c# - 基于运行时参数类型动态选择方法

c# - 仅在选择选项卡时运行查询 WPF MVVM

c# - 在c#中锁定代码部分

C# 异步/等待控制台应用程序中的奇怪行为

sql - MS Access FE/SQL BE 保存后需要自动编号填充到表单上

c# - 如何为 BackgroundService 的 ExecuteAsync 设置超时?

c# - Azure 函数失败,并显示无用的错误消息“值不能为空”。参数名称: value

c# - .NET 相当于 "net group/domain"?

java - 如何在 Netbeans JavaDB 中使用 SQL RANDOM() 函数

mysql - 如何计算 SQL 中临时列的总和?