npgsql:选择一个空数据会引发异常,错误“Column is Null”

时间:2016-08-12 15:41:23

标签: postgresql null npgsql

我在Ubuntu上运行带有.NetCore的npgsql v3.7。

当我执行select查询并且结果中的任何行中的单元格为null时,将抛出异常,并显示错误消息“Column is null”。

我不得不通过将select子句中的每一列放在case语句中来解决这个问题,该语句测试NULL

"CASE WHEN " + fieldName + " IS NULL THEN '' ELSE " + fieldName + " END "

这似乎有点极端,不应该是必要的。有没有其他人遇到这个。

感谢。

2 个答案:

答案 0 :(得分:5)

您可能正在尝试阅读此列:

using (var reader = cmd.ExecuteReader()) {
  reader.Next();
  var o = reader.GetString(0);   // Or any other of the Get methods on reader
  ...
}

如果列包含null,则此代码将失败,并且是预期的行为。在ADO.NET中,您需要在实际获取值之前使用reader.IsDBNull(0)检查空值。这就是数据库API的工作原理。

答案 1 :(得分:1)

我不知道为什么NULL值会给您带来错误,但您可以取消丑陋的CASE声明,转而使用COALESCE

"COALESCE(" + fieldName + ", '')"

理想情况下,您应该进行配置更改,以使NULL值不会导致此问题。

相关问题